Нигде не нашел в С++ как записать значение переменной в бинарном представлении то есть по битам. В HEX понятно a=0x8F; а как в бинарном? чтобы там a=...11101011110111....;
2hbee :
Однако, функция для конвертации строки в целое -- из серии
"вычислить длину строки", т.е. ее быстрее написАть, чем вспомнить,
как работает соответствующая библтотечная фенечка:
unsigned long bit2long(char *s)
{
unsigned long r=0;
for(;*s!='\0'; s++)
r=(r<<=1)|(*s != '0');
return r;
}
>Однако, функция для конвертации строки в целое -- из серии "вычислить длину строки", т.е. ее быстрее написАть, чем вспомнить, как работает соответствующая библтотечная фенечка
Это верно, тем более что bitset производит впечатление недоделанного. Например, если написать
unsigned long f = bitset<100>("1000101011").to_ulong();
скомпилируется, но результат будет неожиданный :-)
>>можно все записать в шестнадцатиричной форме, если хочешь систему исчисления с основанием степень двойки.
> Только иногда устаешь туда-сюда переводить.
Шестнадцатеричное представление является способом "конспектирования" двоичного. После некоторого навыка оно оказывается УДОБНЕЕ (в силу краткости), поэтому "переводить" из 2- в 16- представление требуется только новичкам. Поэтому компилятор этого не поддерживает.
Примерно как с таблицей умножения. Вы ж не делаете файл .h вида
Для меня требывалась прежде всего наглядность
типа
const uchar a[1024]={
b00011111, // Г
b00010000,
b00010000,
b00010000,
b00010000,
b00010000,
b00010000,
b00000111, // Д
b00001001,
b00001001,
b00001001,
b00001001,
b00011111,
b00010001,
b00011111, // Е
b00010000,
b00010000,
b00011100,
b00010000,
b00010000,
b00011111
};
а вот так сразу на вскидку сказать какая буква или цифра закодирована слабо
const uchar a[1024]={
0x0E, // ??
0x11,
0x11,
0x0E,
0x11,
0x11,
0x0E,
0x0E, // ??
0x11,
0x11,
0x0F,
0x01,
0x11,
0x0E
};
а то все такие умные в уме надо умножать.
> а вот так сразу на вскидку сказать какая буква или цифра закодирована слабо
0x0E = 0000 1110
Совершенно навскидку.
> а то все такие умные в уме надо умножать.
Ничего не надо умножать. Надо запомнить таблицу из 16 цифр:
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
Эта таблица для программера -- примерно то же,
что и таблица умножения для школьника, только ее запомнить проще,
поскольку она меньше.
Когда длина машинного слова делилась на 3, для тех же целей
использовалась восьмеричная система. Сейчас все кратно 8
(следовательно, 4) -> пользуются 16-системой,
Попробуй сообразить, что такое двоичная
1001 1010 0101 1101? Зная шестнадцатеричную систему, все тривиально:
9 A 5 D = 0x9A5D
А твоей нотации оно выглядело бы как
#define _1001101001011101 0x9A5D
И так 4 миллиарда раз...
Ну если нет в сях бинарного представления данных значит нет.
А по поводу как это обойти каждый вибирает сам
в уме считать или задать как ему кажеться удобно.
>Ну да, еще можно компьютером гвозди заколачивать ;)
И я пишу прогу не для компа а для контроллера там нету такого понятия как шрифт еще и кирилица, поэтому попрошу не глумиться.