Насколько я знаю, когда вы используете побитовый оператор с левым сдвигом в C, он гарантирует, что свободные бит будут заполнены 0s. Тем не менее, я читал, что правильный сдвиг зависит от реализации, то есть в некоторых машинах свободные разряды будут заполняться 0, а в других они будут заполнены 1 сек.
Я использую правый сдвиг в программе, и, действительно, моя машина заполняет свободные бит 1 сек. Проблема в том, что мне нужно будет заполнить 0s вместо.
Есть ли способ заставить 0s использоваться в сдвигах вправо?
Одним из решений было бы, после применения правого сдвига, создать маску типа 011111111, а затем применить побитовое И, которое изменит самый левый 1, который был вставлен в 0.
Но это громоздко и тратит время. Если бы был способ сообщить моей машине, чтобы заполнить правые смены с помощью 1 с, было бы намного проще.
Спасибо