Черт спасибо попробую.
Сначала была идея использовать>> но зациклился на том что
Цитата
При сдвиге влево правые освобождающиеся биты устанавливаются в нуль. При сдвиге вправо метод заполнения освобождающихся левых битов зависит от типа первого операнда.Если тип unsigned, то свободные левые биты устанавливаются в нуль. В противном случае они заполняются копией знакового бита.
И не подумал что можно сделать нужную операцию используя | и сдвиг влево и вправо.