Степени двойки, двоичные приставки и системы счисления

Таблица степеней двойки от 2⁰ до 2⁶⁴ в десятичной и шестнадцатеричной записи и отрицательных степеней 2⁻ⁿ. Двоичные и десятичные приставки (КиБ и КБ, МиБ и МБ), почему диск на 1 ТБ показывается как 931 ГБ, диапазоны целочисленных типов int8–int64, таблица шестнадцатеричных цифр и приёмы перевода между системами счисления.

Рекламный блок «после калькулятора» (ads/after-calc.html)

Степени двойки — основа вычислительной техники: n бит позволяют записать 2ⁿ различных значений, объёмы памяти кратны степеням двойки, а стойкость шифров и паролей измеряется в битах — двоичном логарифме числа вариантов перебора.

Степени двойки от 0 до 64

n2nВ шестнадцатеричной2−n
0111
1220,5
2440,25
3880,125
416100,0625
532200,03125
664400,015625
7128800,0078125
82561000,00390625
95122000,001953125
101 0244000,0009765625
112 0488000,00048828125
124 09610000,000244140625
138 1922000≈ 1,2207·10−4
1416 3844000≈ 6,1035·10−5
1532 7688000≈ 3,0518·10−5
1665 53610000≈ 1,5259·10−5
17131 07220000≈ 7,6294·10−6
18262 14440000≈ 3,8147·10−6
19524 28880000≈ 1,9073·10−6
201 048 576100000≈ 9,5367·10−7
212 097 152200000≈ 4,7684·10−7
224 194 304400000≈ 2,3842·10−7
238 388 608800000≈ 1,1921·10−7
2416 777 2161000000≈ 5,9605·10−8
2533 554 4322000000≈ 2,9802·10−8
2667 108 8644000000≈ 1,4901·10−8
27134 217 7288000000≈ 7,4506·10−9
28268 435 45610000000≈ 3,7253·10−9
29536 870 91220000000≈ 1,8626·10−9
301 073 741 82440000000≈ 9,3132·10−10
312 147 483 64880000000≈ 4,6566·10−10
324 294 967 296100000000≈ 2,3283·10−10
338 589 934 592200000000≈ 1,1642·10−10
3417 179 869 184400000000≈ 5,8208·10−11
3534 359 738 368800000000≈ 2,9104·10−11
3668 719 476 7361000000000≈ 1,4552·10−11
37137 438 953 4722000000000≈ 7,2760·10−12
38274 877 906 9444000000000≈ 3,6380·10−12
39549 755 813 8888000000000≈ 1,8190·10−12
401 099 511 627 77610000000000≈ 9,0949·10−13
412 199 023 255 55220000000000≈ 4,5475·10−13
424 398 046 511 10440000000000≈ 2,2737·10−13
438 796 093 022 20880000000000≈ 1,1369·10−13
4417 592 186 044 416100000000000≈ 5,6843·10−14
4535 184 372 088 832200000000000≈ 2,8422·10−14
4670 368 744 177 664400000000000≈ 1,4211·10−14
47140 737 488 355 328800000000000≈ 7,1054·10−15
48281 474 976 710 6561000000000000≈ 3,5527·10−15
49562 949 953 421 3122000000000000≈ 1,7764·10−15
501 125 899 906 842 6244000000000000≈ 8,8818·10−16
512 251 799 813 685 2488000000000000≈ 4,4409·10−16
524 503 599 627 370 49610000000000000≈ 2,2204·10−16
539 007 199 254 740 99220000000000000≈ 1,1102·10−16
5418 014 398 509 481 98440000000000000≈ 5,5511·10−17
5536 028 797 018 963 96880000000000000≈ 2,7756·10−17
5672 057 594 037 927 936100000000000000≈ 1,3878·10−17
57144 115 188 075 855 872200000000000000≈ 6,9389·10−18
58288 230 376 151 711 744400000000000000≈ 3,4694·10−18
59576 460 752 303 423 488800000000000000≈ 1,7347·10−18
601 152 921 504 606 846 9761000000000000000≈ 8,6736·10−19
612 305 843 009 213 693 9522000000000000000≈ 4,3368·10−19
624 611 686 018 427 387 9044000000000000000≈ 2,1684·10−19
639 223 372 036 854 775 8088000000000000000≈ 1,0842·10−19
6418 446 744 073 709 551 61610000000000000000≈ 5,4210·10−20

Удобное приближение: 2¹⁰ = 1024 ≈ 10³, поэтому 2²⁰ ≈ миллион, 2³⁰ ≈ миллиард, 2⁴⁰ ≈ триллион. Например, 2³² ≈ 4·10⁹, а 2⁶⁴ ≈ 1,8·10¹⁹.

Рекламный блок «внутри статьи» (ads/in-article.html)

Двоичные и десятичные приставки

Десятичная приставкаЗначениеДвоичная приставка (МЭК)ЗначениеРазница
килобайт, кБ10³кибибайт, КиБ (KiB)2¹⁰ = 10242,4 %
мегабайт, МБ10⁶мебибайт, МиБ (MiB)2²⁰ = 1 048 5764,9 %
гигабайт, ГБ10⁹гибибайт, ГиБ (GiB)2³⁰ = 1 073 741 8247,4 %
терабайт, ТБ10¹²тебибайт, ТиБ (TiB)2⁴⁰10,0 %
петабайт, ПБ10¹⁵пебибайт, ПиБ (PiB)2⁵⁰12,6 %
эксабайт, ЭБ10¹⁸эксбибайт, ЭиБ (EiB)2⁶⁰15,3 %

Производители накопителей указывают объём в десятичных единицах, а Windows считает в двоичных, но пишет «ГБ». Поэтому диск на 1 ТБ = 10¹² байт показывается как 10¹²/2³⁰ ≈ 931 «ГБ» — место никуда не пропало. Скорость передачи данных всегда измеряют в десятичных единицах и в битах: 100 Мбит/с = 12,5 МБ/с.

Диапазоны целочисленных типов

ТипБитБез знакаСо знаком (дополнительный код)
byte / int880 … 255−128 … 127
short / int16160 … 65 535−32 768 … 32 767
int / int32320 … 4 294 967 295−2 147 483 648 … 2 147 483 647
long / int64640 … 18 446 744 073 709 551 615−9 223 372 036 854 775 808 … 9 223 372 036 854 775 807

Числа с плавающей точкой двойной точности (double) хранят 53 значащих бита, поэтому все целые числа до 2⁵³ = 9 007 199 254 740 992 представимы точно, а дальше появляются пропуски. В JavaScript это значение Number.MAX_SAFE_INTEGER + 1.

Шестнадцатеричные цифры

Hex0123456789ABCDEF
Dec0123456789101112131415
Bin0000000100100011010001010110011110001001101010111100110111101111

Каждая шестнадцатеричная цифра соответствует ровно четырём битам, поэтому перевод между двоичной и шестнадцатеричной системами делается по группам: 1011 0110₂ = B6₁₆ = 182₁₀. Восьмеричная цифра соответствует трём битам: 10 110 110₂ = 266₈.

Приёмы перевода

  • Из десятичной в двоичную: делим число на 2 и записываем остатки снизу вверх. 37 → 18 (1) → 9 (0) → 4 (1) → 2 (0) → 1 (0) → 0 (1): 37 = 100101₂.
  • Из двоичной в десятичную: складываем степени двойки, стоящие на местах единиц: 100101₂ = 32 + 4 + 1 = 37.
  • Число бит для N значений: ⌈log₂ N⌉. Например, для 1000 вариантов нужно 10 бит, для миллиона — 20.
  • Проверка, что число — степень двойки: у него ровно одна единица в двоичной записи; в программах это проверяют выражением n & (n − 1) == 0.

Стойкость пароля в битах — это log₂ числа вариантов: пароль из 12 случайных символов из 62 (буквы и цифры) даёт 12·log₂ 62 ≈ 71,5 бита. Подробнее — в калькуляторах генератора паролей и проверки стойкости пароля.

Рекламный блок «внизу страницы» (ads/bottom.html)