Перевод между системами счисления
Переведите целое число между двоичной, восьмеричной, десятичной, шестнадцатеричной и любой системой счисления до 36 и посмотрите его битовое представление в дополнительном коде.
Работает полностью в браузере
Дополнительный код
| Разрядность | Битовое представление (hex, двоичное) | Значение при чтении как |
|---|
Целые числа до 4 096 цифр, положительные или отрицательные. Дроби не переводятся.
Как перевести число из одной системы счисления в другую
- Выберите систему, в которой записано число, или «Другое основание» и введите основание от 2 до 36.
- Введите число. Знак минус допустим, подходящий префикс
0x,0bили0oпринимается; пробелы и символы подчёркивания игнорируются. - Прочитайте результат во всех системах ниже, скопируйте нужный и загляните в таблицу дополнительного кода для целых чисел фиксированной разрядности.
Как устроены системы счисления
Основание системы счисления — это число различных цифр, которые в ней используются. В десятичной системе каждая позиция весит в десять раз больше соседней справа; в двоичной — в два раза, поэтому 1101 означает 8 + 4 + 0 + 1 = 13. В шестнадцатеричной системе шестнадцать цифр: от 0 до 9, затем от A до F, и каждая hex-цифра соответствует ровно четырём двоичным, поэтому программисты используют её как компактную запись байтов: 255 — это FF, или 11111111.
Восьмеричная система группирует двоичные цифры по три и до сих пор встречается в правах доступа к файлам Unix (755 означает rwxr-xr-x). Система с основанием 36 использует все цифры и буквы и встречается в коротких идентификаторах и сервисах сокращения ссылок.
Компьютеры хранят знаковые целые числа в фиксированном числе бит в дополнительном коде, где старший бит имеет отрицательный вес. Поэтому одни и те же биты могут означать два разных числа: 11001000 — это 200 при чтении как беззнакового и −56 при чтении как знакового. Таблица под результатами показывает оба варианта для распространённых размеров целых.
Советы
- Нужно превратить в двоичные байты текст, а не число? Воспользуйтесь инструментом Текст в двоичный код.
- Коды цветов вроде
#1636A3— это три hex-байта: разберите их в инструменте Конвертер цветов и проверка контрастности. - Метки времени Unix — это обычные десятичные секунды; переведите их в инструменте Конвертер Unix-времени.
Вопросы и ответы
Какого размера число можно перевести?
До 4 096 цифр во входной системе. В переводе используется точная целочисленная арифметика (BigInt), поэтому очень большие значения, например 2⁶⁴ + 1 = 18446744073709551617, переводятся без округления, в отличие от калькуляторов, которые выше примерно 9 квадриллионов переходят на числа с плавающей запятой.
Можно ли перевести дробь, например 0,1?
Нет. Переводятся только целые числа, а десятичная точка выдаётся как ошибка, а не молча отбрасывается. У многих дробей нет точного представления в другой системе: 0,1 в десятичной системе в двоичной превращается в периодическую дробь, поэтому в большинстве языков программирования 0,1 + 0,2 не равно в точности 0,3.
Что показывает дополнительный код?
Так компьютеры хранят знаковые целые числа в фиксированном числе бит. Отрицательное число −n хранится как 2 в степени, равной числу бит, минус n, поэтому −1 в 8 битах — это 11111111 (FF). Таблица показывает битовое представление для 8, 16, 32 и 64 бит и то, что оно означает при чтении как знакового и как беззнакового целого. Если число не помещается в заданную разрядность, в строке так и сказано, вместо того чтобы обрезать его.
Какие цифры используются выше основания 10?
Буквы, как в большинстве языков программирования: A — это 10, B — 11 и так далее до Z для 35, поэтому 36 — наибольшее основание. На вводе регистр не важен; на вывод влияет параметр «Заглавные буквы».
Почему цифра считается недопустимой?
В каждой системе допустимы только цифры меньше её основания: в двоичной 0 и 1, в восьмеричной от 0 до 7, в шестнадцатеричной от 0 до 9 и от A до F. В сообщении об ошибке указаны символ и его позиция, чтобы вы нашли опечатку или выбрали систему, в которой число действительно записано.