Битовые операции
Побитовые AND / OR / XOR / NOT / сдвиги с визуализацией битов. Плюс IEEE 754 — разложение float32 на знак, экспоненту и мантиссу.
01
Побитовые операции
Разбор по битам
A0010101042
B0000111115
AND0000101010
02
IEEE 754 — float32
Знак
0
положительное
Экспонента
10000000
128 −127 = 1
Мантисса
10010001111010111000011
1.4781507
HEX0x4048F5C3
BIN (32 бита)0 10000000 10010001111010111000011
03
О побитовых операциях
AND, OR, XOR
Основа0b0011 AND 0b0101 = 0b0001
Побитовые операции применяются к каждой паре битов независимо. AND — оба должны быть 1. OR — хотя бы один 1. XOR — биты разные. Используются для маскирования, установки/сброса флагов, шифрования (XOR — базовый строительный блок), контрольных сумм.
Сдвиги <<, >>
Умножение / деление5 << 2 = 20 · 20 >> 2 = 5
Сдвиг влево на n эквивалентен умножению на 2^n, вправо — целочисленному делению на 2^n. Быстрее умножения/деления на процессоре. В JS двухбайтовый оператор >>> — беззнаковый сдвиг вправо (важно для 32-битных операций с знаком).
IEEE 754 · float32
3 части1 бит знак · 8 бит экспонента · 23 бита мантисса
Стандарт представления вещественных чисел: 32 бита = знак + смещённая экспонента + мантисса. 0.1 в двоичной — бесконечная дробь (как 1/3 в десятичной), из-за чего 0.1 + 0.2 ≠ 0.3. Для денежных сумм используйте decimal / целые копейки.
Битовые флаги
ПрактикаREAD=1 WRITE=2 EXEC=4 · RWX = 7
Классическая техника: каждый бит числа хранит один булевый флаг. Set: v |= FLAG. Clear: v &= ~FLAG. Check: v & FLAG. Toggle: v ^= FLAG. Так работают права файлов в Unix (chmod), настройки UI, feature flags и множество API.