Битовые операции, часть Инверсия и сдвиг


Download 30.19 Kb.
bet3/4
Sana13.04.2023
Hajmi30.19 Kb.
#1350169
1   2   3   4
Bog'liq
Битовые операции, часть 1. Инверсия и сдвиг. Битовые операции, часть 2.

a = a >> 1;
a = a << 1;
Если число нечетное, самый младший бит у него равен 1. Это не договоренность, это просто математически так получается. С помощью сдвига вправо мы выталкиваем этот бит, он теряется. Затем сдвигом влево мы возвращаем всё назад, но уже без младшего бита (он замещается нулевым битом). Давайте проверим с помощью числа 5:
00000101 – это 5
00000010 – сдвинули вправо один раз, получилось 2
00000100 – сдвинули влево один раз, получилось 4
Так из нечетного числа 5 получилось четное число 4. Если же оно и так было 4, то оно и останется 4.
Чтобы сделать из четного числа нечетное, нужно сделать то же самое и к результату добавить или отнять 1.
Замечу, что такого же эффекта можно добиться и другими битовыми операциями, но мы до них пока не добрались.
Если число состоит из двух байт, то с помощью битового сдвига можно прочитать значение старшего байта. Для этого нужно просто сдвинуть число 8 раз вправо:
1111111100000000 – это 65280, нужно получить старший байт
0000000011111111 – после сдвига вправо получилось 255
Мы получили 255 – старший байт числа.
Кроме того, я применял битовый сдвиг для перемещения фигуры вправо и влево в игре "5-килобайтный Тетрис".
При желании можно найти ещё много применений. Но для полной свободы битовый сдвиг надо комбинировать с другими операциями, о которых речь пойдёт в следующей части.
Битовые операции, часть 2. "И".
25 June
В предыдущей части мы познакомились с битовыми операциями инверсии и сдвига. Теперь рассмотрим "и".
& – "и"
В этой операции участвуют два числа. Вместе они дают некий результат. Можно назвать это умножением, но не для всего числа, а для каждого отдельного бита.
1 & 1 это то же, что 1 * 1. Результат 1.
1 & 0 это то же, что 1 * 0. Результат 0.
0 & 1 это то же, что 0 * 1. Результат 0.

Download 30.19 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling