Однажды писал про двоичные литералы в GCC: /post/2009-10-02_13.44_0b00100100, новый стандарт C++14 закрепил их в C++.
Но тут я хотел бы рассмотреть лёгкий способ перехода в уме между hex и bin представлениями.
Переводить, на самом деле, не просто, а очень просто. Достаточно запомнить таблицу представления от 0 до F, а дальше переходить от hex в bin и обратно как два пальца об асфальт: каждая hex цифра - это 4 бита в bin.
Для примера, таблица:
0 - 0000
1 - 0001
2 - 0010
3 - 0011
4 - 0100
5 - 0101
6 - 0110
7 - 0111
8 - 1000
9 - 1001
A - 1010
B - 1011
C - 1100
D - 1101
E - 1110
F - 1111
Ну и взять число: 110110110B
Разделим на группы по 4 бита, недостающие (слева) добьём нулями:
110110110B -> 1 1011 0110B -> 0001 1011 0110
0001b = 1h 1011b = Bh 0110b = 6h
т.е. имеем 0x1B6
Причём в таблице, если разделить её на 4 части, то в бинарном виде первый два бита - это номер части от 0 (00b) до 3 (11b) и запомнить, по сути, нужно только числа от 0 до 3 в бинарном виде. К примеру:
1010b = 1000b + 0010b
10b = 2h ⇒ 1000b = 2h * 4 = 8h
1000b + 0010b = 8h + 2h = Ah
или: 1101b
1101b = 1100b + 0001b
11b = 3 ⇒ 1100b = 3 * 4 = 12 = Ch
1100b + 0001b = 11b * 4 + 01b = Ch + 1h = Dh
Ну или в более общем виде:
XXYYb = XXb * 4 + YYb
Понятно, что 64бит число в уме не совсем получится переводить, но последовательно записывая его на бумажке - вполне себе можно.