Исключающее или для целых в Rust
Бит результата равен единице, если биты
на этом разряде разные. Совпадающие нули
и совпадающие единицы дают ноль в ответе.
Знак ^ ставят между двумя целыми.
Так находят различия двух масок или
переключают отдельные флаги. Проверим
на маленьких u8 и выведем число:
fn main() {
let a = 5u8;
let b = 3u8;
let r = a ^ b;
println!("{}", r);
}
Повторное применение с тем же вторым числом возвращает исходное значение первого:
fn main() {
let a = 5u8;
let b = 3u8;
let once = a ^ b;
let back = once ^ b;
println!("{}", back);
}
Даны числа:
let m = 12u8;
let n = 10u8;
Найдите число, где единицы только в
разрядах, где m и n
различаются, и выведите его.
Даны числа:
let x = 7u8;
let y = 2u8;
Получите из x и y число
с единицами на несовпадающих разрядах
и выведите результат.
Даны числа:
let v = 9u8;
let tag = 1u8;
Переключите разряды v там, где
в tag единица, и выведите итог.