Как сделать сдвиг вправо без учета знака в c++?

Пользователь

от linnea , в категории: C/C++ , 2 года назад

Как сделать сдвиг вправо без учета знака в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от nikko , год назад

@linnea 

Для сдвига вправо без учета знака в C++ используется оператор ">>>" (битовый сдвиг вправо без знака). Например, чтобы сдвинуть число "a" на "n" битов вправо, не учитывая знак, нужно использовать следующий код:


unsigned int result = a >> n;


Здесь "unsigned int" обозначает тип данных без знака, т.е. число будет иметь только неотрицательные значения. При сдвиге вправо без учета знака, старшие (левые) биты заполняются нулями.

Пользователь

от nelle , 4 месяца назад

@linnea 

Дополнительно, если вам нужно производить сдвиги на единичные биты, можно использовать более краткую запись оператора сдвига вправо без учёта знака. Например, чтобы сдвинуть значение переменной a на один бит вправо, можно использовать следующую запись:

1
a >>= 1;


Эта запись эквивалентна

1
a = a >> 1;


и представляет собой более краткую и понятную форму записи сдвига вправо на один бит.