Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Двоичный код

1.6K
13 мая 2003 года
Jimmy
58 / / 02.04.2003
Заклинило!
Такое бывает. Самые простые вещи иногда вылетают из головы!
Подскажите! Как запихать двоичный код в переменную?
Если не понятно, вот пояснения:
int a;
a = 0x00ff // это 16-ричный формат

а как двоичный код записать?
3.5K
13 мая 2003 года
vickr
19 / / 24.04.2003
Цитата:
Originally posted by Jimmy
Заклинило!
Такое бывает. Самые простые вещи иногда вылетают из головы!
Подскажите! Как запихать двоичный код в переменную?
Если не понятно, вот пояснения:
int a;
a = 0x00ff // это 16-ричный формат

а как двоичный код записать?



Дружище Jimmy, двоичный, 16-ричный и др. "-ичные" коды - это то, как мы сами записываем или представляем конкретное число. Число 0x00ff в двоичном представлении будет выглядеть так: 11111111, а в десятичном - 255. Но это одно и то же число. Компилятор допускает запись чисел в десятичном (1234), шестнадцатиричном (0ч4d2) и экспоненциальном (0.1234E0) форматах. Может, еще в каких - сейчас не помню - но только не в двоичном. Как правило, если нужно подчеркнуть, что имеет важность двоичное представление числа - например, оно служит битовой маской для сравнения или набором флагов (опций) и т.д. - используется 16-ричный формат записи (как у тебя в примере).
Короче, в двух словах - пример правильный. Так и записывай.

460
14 мая 2003 года
Berg
261 / / 27.03.2003
vickr все правильно написал. Но, если ОЧЕНЬ хочется, то, наверное, можно использовать asm-вставки(в ассемблере двоичная форма записи точно есть)...

P.S. Зато :-) в C++ есть 8-ричная форма, начинающаяся на 0...
1.9K
14 мая 2003 года
kswapd
93 / / 08.02.2003
Цитата:
Originally posted by vickr
Компилятор допускает запись чисел в десятичном (1234), шестнадцатиричном (0ч4d2) и экспоненциальном (0.1234E0) форматах. Может, еще в каких - сейчас не помню - но только не в двоичном.



Еще в восмеричном, если первая цифра 0 (2Berg: и в С, не только в С++)

Впрочем, если неймется, можешь тайком от всех воспользоваться следующим кодом (расположи его где-нибудь в начале проги):

 
Код:
#define bin8(b7,b6,b5,b4,b3,b2,b1,b0) \
   ((b0)|((b1)<<1)|((b2)<<2)|((b3)<<3)| \
   ((b4)<<4)|((b5)<<5)|((b6)<<6)|((b7)<<7))

#define bin16(b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1,b0) \
   ((bin8(b15,b14,b13,b12,b11,b10,b9,b8)<<8)| \
   (bin8(b7,b6,b5,b4,b3,b2,b1,b0)))


Использовать так:

 
Код:
int a = bin8(1,0,0,1,0,0,0,1);
int b = bin16(1,0,0,1,0,0,0,1,1,0,1,1,0,0,0,1);


P.S. Это шутка, так делать, мягко говоря, не рекомендуется.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог