Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpBtNt 84 of 288 menu
◀ ▶

Инверсия битов целого в Rust

Каждый бит целого меняется на противоположный: ноль становится единицей, единица нулем. Для целых перед числом пишут тот же знак, что и для логического не у bool, но смысл другой: переворачиваются все разряды записи, а не одно истинное значение.

Для bool этот знак только меняет истину на ложь и наоборот. Здесь работаем только с целыми, чаще с узким беззнаковым типом, чтобы результат помещался в привычный диапазон.

Посмотрим на нулевое значение типа и на обычное маленькое число:

fn main() { let all = !0u8; let x = 5u8; let inv = !x; println!("{} {}", all, inv); }

Даны числа:

let v = 0u8;

Получите из v число, где каждый разряд u8 стал единицей, и выведите его.

Даны числа:

let n = 8u8;

Замените каждый разряд n на противоположный и выведите результат.

Дан следующий код:

let ok = true; let byte = 1u8;

Скажите, переворачивает ли восклицательный знак перед ok разряды byte так же, как перед самим byte.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить