Битовое или для целых в Rust
Бит результата равен единице, если единица
хотя бы в одном из чисел на этом разряде.
Ноль в обоих операндах дает ноль в ответе.
Знак | пишут между двумя целыми.
Так включают флаги: новые единичные разряды
добавляют к уже установленным, не трогая
остальные. Для наглядности возьмем тип
u8 и выведем результат на экран:
fn main() {
let a = 5u8;
let b = 3u8;
let r = a | b;
println!("{}", r);
}
Тот же прием подойдет, когда нужно объединить две маски в одно целое:
fn main() {
let base = 4u8;
let extra = 1u8;
let flags = base | extra;
println!("{}", flags);
}
Даны числа:
let p = 2u8;
let q = 5u8;
Соберите число, где единица стоит, если
она есть у p или у q,
и выведите результат.
Даны числа:
let old = 8u8;
let add = 3u8;
Добавьте к old все единичные
разряды из add и выведите итог.
Даны числа:
let u = 0u8;
let v = 6u8;
Получите число, равное v, если
u пока нулевое, и выведите его.