Что считает калькулятор
Число в позиционной системе — это сумма цифр, умноженных на степени основания. Калькулятор переводит целую и дробную часть между системами с основанием от 2 до 36, показывает разложение по разрядам и выполняет побитовые операции AND, OR, XOR и NOT над целой частью.
Как заполнить поля
Введите число и выберите его систему: двоичную, восьмеричную, десятичную, шестнадцатеричную или любую другую с основанием от 2 до 36. Цифры после девятки обозначаются буквами A–Z, регистр не важен. Дробная часть отделяется точкой или запятой. Для побитовых операций нужен второй операнд и ширина — 8, 16 или 32 бита.
Как получается результат
Целая часть переводится делением на новое основание: остатки дают цифры от младшего разряда к старшему. Например, 255 при делении на 16 даёт остатки 15 и 15, то есть FF.
Дробная часть переводится умножением. Берётся дробь, умножается на основание, целая часть результата становится очередной цифрой, а дробная уходит в следующий шаг: 0,25 × 2 = 0,5 → цифра 0; 0,5 × 2 = 1,0 → цифра 1, итог 0,01 в двоичной записи.
Перевод дроби не всегда заканчивается. Тогда показываются первые 12 цифр и ставится пометка, что представление периодическое: десятичная 0,1 в двоичной системе даёт 0,0001100110011… и не обрывается.
Побитовые операции работают над целой частью по модулю 2 в степени выбранной ширины. Восемь бит означают маску 255, шестнадцать — 65535, тридцать два — 4294967295. NOT в этой же ширине даёт дополнение до маски. Дробная часть в побитовых операциях не участвует, о чём калькулятор предупреждает.
Панель разрядов раскладывает число на блоки: у каждого разряда своя цифра и вес b в степени позиции. Отдельный ряд показывает дробные разряды с весами b⁻¹, b⁻² и так далее.
Пример, который можно повторить
255 в десятичной системе — это 11111111 в двоичной, 377 в восьмеричной и FF в шестнадцатеричной. 10,25 даёт 1010,01 в двоичной, а 0,5 — ровно 0,1. Шестнадцатеричное 2A равно десятичному 42.
При ширине 8 бит: FF AND 0F = 00001111 = 15; FF OR 0F = 11111111 = 255; FF XOR 0F = 11110000 = 240; NOT FF = 00000000 = 0.
Где модель не работает
Перевод ограничен дробной частью: у периодических дробей точное представление бесконечно, показаны только первые 12 цифр. Большие целые числа переводятся через числа двойной точности, поэтому выше 2⁵³ возможна потеря точности — для таких значений нужны целочисленные библиотеки. Побитовые операции сознательно ограничены 32 битами и не применяются к дробной части. Отрицательные числа не имеют здесь представления в дополнительном коде: знак учитывается отдельно, а не как старший бит.