kykyryky
@kykyryky

Как «вставить» биты в число?

Допустим есть число:
0000 0000 0100 0100
Переменная 2 байта.
Пусть нам нужно "вставить" ноль в последних 8 битах так, чтобы он был в позициях с номерами, равными степеням двойки. Первые 8 бит у нас прозапас, т.к. результат "увеличится" на 4 бита.
То есть в результате должны получить:
0000 0000 1000 0100

Образно говоря, как-то надо несколько раз сдвинуть часть битов влево, тем самым создав новые биты на нужных позициях.
Как реализовать? дайте подсказку.

Upd язык С
  • Вопрос задан
  • 664 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Зависит от языка программирования. Например на C
y = ((x&0xF0)<<4)|((X&0x0E)<<3)|((x&1)<<2);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Mrrl
@Mrrl
Заводчик кардиганов
Если нужно сделать так, как в вашем примере (т.е. вставить биты 2048,1024,256,16), то так:
y=((x&0xf00)<<4)+((x&0x80)<<2)+((x&0x70)<<1)+(x&0xf);

Но так биты никто не нумерует. Обычно они нумеруются, начиная с младшего - иногда он считается за нулевой, иногда за первый.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы