Большой Воронежский Форум
» Программирование>Побитовое чтение на С++
Skech 11:03 14.06.2007
Дано: переменная типа int, (максимальное значение 255 это для справки)
Надо: Взять по очереди каждий бит и посмотреть 0 или 1

Долго загонялся с >> и логикой, но что-то не получается желаемое...

Плиз, бросьте коду, как это сделать????

Система MSVC 2005, но это не суть.. [Ответ]
maximn 11:20 14.06.2007
сдвиг и остаток от деления на 2? [Ответ]
netwind 12:09 14.06.2007
Остаток от деления выдает в тебе математика. Низачот, за прогул занятия по битовым операциям.

Программист сделал бы так:

int c=34;
for (int i=0;i <8;i++) {
if (c & 1)
{ cout << "1";}
else { cout <<"0";}
c = c >> 1;
}
cout << endl;

непонятно чего тут сложного и где можно загоняться?

кстати,этот кусок не выводит двоичное представление числа в общепринятом виде.
если ты подобным образом печатал и проверял на калькуляторе - надо бы сдвигать наоборот влево
и проверять самый старший бит числом 128 [Ответ]
Part!zan 02:40 17.06.2007

Сообщение от netwind:
Программист сделал бы так:

А грамотный программист сократил бы цикл до двух строк, а при желании - и до одной.

for (int с=34;c;c>>=1) cout << (c & 1); [Ответ]
netwind 10:34 18.06.2007
Part!zan, это уже хакир какой-то [Ответ]
J++ 11:48 18.06.2007

Сообщение от :
for (int с=34;c;c>>=1) cout << (c & 1);

не годится если изначально c==0

можно

int c=34;
for (int i=0; i<sizeof(int)*8; i++, c>>=1) cout<<(c&1); [Ответ]
maximn 11:53 18.06.2007
а у меня трусы фиолетовые [Ответ]
Part!zan 21:40 18.06.2007
J++, если изначально c=0, то и так понятно шо там все ноли.

maximn, рад за тебя

netwind, не, хакир бы на асме написал. или даже в машкодах сразу.
[Ответ]
Потерянный рай 22:34 21.06.2007

Сообщение от Skech:
Дано: переменная типа int, (максимальное значение 255 это для справки)
Надо: Взять по очереди каждий бит и посмотреть 0 или 1
Долго загонялся с >> и логикой, но что-то не получается желаемое...
Плиз, бросьте коду, как это сделать????
Система MSVC 2005, но это не суть..

если для тебя >> и "логика" это загон делай
(X & 1)>0 - true если младший бит выставлен в 1
и дели на два оставшееся число, гоу ту назад 7 раз.

и у int максимальное значение не 255, это для справки. это у тебя в задаче максимальное возможное значение у переменной 255. [Ответ]
Part!zan 22:12 23.06.2007
Потерянный рай, предлагаю развить условие, а то как-то несерьезно получается:
(X & (int)(log10(100)-.5))!=23*(X/5 - X/(int)(log(148.4131591026)+.5)) [Ответ]
Вверх