Как работают битовые операции в данных программах?
unsigned char i = 0, j(50), k = 128;
for(i = 17; i < 33; i += 3){
j += k++;
k >>= 1;
}
printf("i = %03d; j = %d; k = %04d", i, j, k);
return 44;
...
unsigned char d, f, g;
int a = 520;
d = a++;
f = --d;
g = d & 0x7E;
g <<= 3;
printf("d = %d; f = %d; g = %d", d, f++, g);
Расскажите как работают сдвиги в данных программах.
P.S.буду очень благодарен, если что это две разные программы
Ответы (1 шт):
Автор решения: Strunder
→ Ссылка
перевод числа в 2 двоичную систему счисления и побитовый сдвиг. Рассмотрим на примере k >>= 1; Пусть К = 10 переводим в 2ю систему счислений 1010 далее выполняем сдвиг и получаем 101 что будет 5
То есть действие >> убирает справа цифру в двоичном числе
А << добавляет 0 справа