Как вставить перед каждым битом в числе, три нулевых бита?
К примеру есть число:
а = 10101111 (bin - 8 bit)
Необходимо с помощью битовых операций вставить после каждого бита числа, три нулевых бита, чтобы получилось вот так:
b= 00010000000100000001000100010001 (bin - 32 bit)
Как бы мне это сделать для любых чисел "а" восьми битных?
youngblood: Первое действие - сдвигаем четыре левых бита, соответственно маски 1111|0000 (F0) и 0000|1111 (0F), заполняются биты xxxx|0000|0000|0000|xxxx
Затем в каждой части сдвигаем по два левых бита, 1100|0000|0000|0000|1100 (C000C) и 0011|0000|0000|0000|0011 (30003), заполнены 00xx|0000|00xx|0000|00xx|0000|00xx
Ну и напоследок в каждой паре сдвигаем левый бит, 0010|0000|0010|0000|0010|0000|0010 (2020202) и 0001|0000|0001|0000|0001|0000|0001 (1010101), заполнены 000x|000x|000x|000x|000x|000x|000x|000x
0. Акумулятор = 0
1. Шифтишь число вправо, получаешь бит;
2. Шифтишь аккумулятор вправо на 4;
3. Аккумулятор = Аккумулятор OR бит (из п.1)
4. Повторяешь п.1-3 для остальных семи битов
fshp: Eugene Khrustalev: я так думал сделать однако с последней маской не понял, какая она должна быть
x=0b10101111
x &= 0b1111111111;
x = (x | x << 16) & 0b110000000000000000000011111111;
x = (x | x << 8) & 0b1100000000000011110000000000001111;
x = (x | x << 4) & 0b1100000011000000110000001100000011;