Битовые операции

Побитовые AND / OR / XOR / NOT / сдвиги с визуализацией битов. Плюс IEEE 754 — разложение float32 на знак, экспоненту и мантиссу.

01AND / OR / XOR02IEEE 75403О операциях04Похожие
01

Побитовые операции

введите A и B, оператор выберите ниже
A · десятичное
B · десятичное
Операция
Результат
100x0A
Разбор по битам
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.
«» добавлен в избранное