Т.е. можно ли средствами C++ из 1100 0000 превратить в 0000 0011 ? Какие для этого нужно использовать методы?
Ответ
Как известно, байт - это восьмиразрядное двоичное число. Стало быть, его можно представить в виде такого многочлена:
b1 * 2^7 + b2 * 2^6 + ... + b7 * 2^1 + b8 * 2^0
ну или
128 * b1 + 64 * b2 + ... + 2 * b7 + 1 * b8
где b1 - b8 - биты в байте.
Следовательно, получить байт "задом наперёд" можно так:
unsigned char Invert(unsigned char x)
{
int base = 256;
unsigned char res = 0;
while (x != 0)
{
res += (x & 1) * (base >>= 1);
x >>= 1;
}
return res;
}
Комментариев нет:
Отправить комментарий