Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2012, 20:54   #1
Silly Student
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 32
По умолчанию Как получить доступ к младшим 4 битам ?

Допустим, есть int x = 0x1E
т.е. старшие 4 бита == 1
младшие == E

К старшим доступ получаю легко, int z = x >> 4;
А как получить доступ к младшим ? Пробовал >> 8 - не прокатывает
Silly Student вне форума Ответить с цитированием
Старый 03.05.2012, 20:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если не ошибаюсь
Код:
int z = x & 15;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.05.2012, 21:15   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Stilet, совершенно верно.
Silly Student, вариант для старшего разряда со сдвигом подойдет только если мы имеем дело с однобайтовым числом (или со значением, не превышающим 0xFF), а int обычно содержит 4 байта. Поэтому чтобы получить старшие четыре бита МЛАДШЕГО БАЙТА, нужно делать аналогично:
Код:
int y = x & 0xF0;
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 03.05.2012, 21:33   #4
Silly Student
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 32
По умолчанию

Вообще в моем случае значение как раз и не будет превышать 0xFF. Но всеравно интересно, почему именно 0xF0 ?
Silly Student вне форума Ответить с цитированием
Старый 03.05.2012, 21:35   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Потому что в двоичной системе это как раз и будет 11110000. Аналогично 0x0F(16) = 15(10) = 00001111(2). А дальше - простая двоичная арифметика (двоичное И).
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить доступ к данным документа iceman2112 Visual C++ 0 04.04.2011 17:52
Как получить доступ к микшерам винды iiunbreakableii Мультимедиа в Delphi 8 13.11.2009 16:03
Как получить доступ к сайту в DELPHI cowboy Общие вопросы Delphi 8 10.09.2009 16:12
Как получить доступ к данным kiber0net0 Помощь студентам 2 03.09.2008 08:14
Как получить доступ к ячейке DBGrid RatMir БД в Delphi 1 16.06.2008 22:35