Gymterview
junior

Какие системы счисления используются в компьютерах? <!-- grade: junior -->

Система счисления — это способ записи чисел с помощью определённого набора цифр и правил. В компьютерах используются три основные системы: двоичная (base-2), шестнадцатеричная (base-16) и десятичная (base-10).

Двоичная (Binary, base-2)

  • Цифры: 0 и 1.
  • Фундаментальная система для компьютеров, так как электронные компоненты имеют два состояния (есть ток / нет тока, высокое / низкое напряжение).
  • Префикс в Java: 0b — например, 0b1010 = 10.
  • 1 бит = одна двоичная цифра, 1 байт = 8 бит.
Пример
Двоичное    Десятичное
0b0001      1
0b0010      2
0b0100      4
0b1000      8
0b1010      10
0b11111111  255

Шестнадцатеричная (Hexadecimal, base-16)

  • Цифры: 0-9 и A-F (A=10, B=11, …, F=15).
  • Компактная запись двоичных данных: каждая hex-цифра = 4 бита (полубайт / nibble).
  • Префикс в Java: 0x — например, 0xFF = 255.
  • Широко используется для: адресов памяти, цветов в CSS (#FF0000), MAC-адресов, UUID.
Пример
Hex     Двоичное        Десятичное
0x0A    0000 1010       10
0xFF    1111 1111       255
0x1F4   0001 1111 0100  500

Десятичная (Decimal, base-10)

Привычная человеку система, используется в исходном коде и выводе для пользователя.

Перевод между системами в Java

Пример
int x = 42;
Integer.toBinaryString(x);      // "101010"
Integer.toHexString(x);         // "2a"
Integer.toOctalString(x);       // "52"
Integer.parseInt("101010", 2);  // 42
Integer.parseInt("2a", 16);     // 42

Представление отрицательных чисел — дополнительный код (two’s complement)

  • Старший бит — знаковый (0 = положительное, 1 = отрицательное).
  • Для получения отрицательного числа: инвертировать все биты и прибавить 1.
  • Пример (8 бит): -1 = 1111 1111, -128 = 1000 0000.
  • Для int (32 бита) в Java: диапазон от -2^31 (-2 147 483 648) до 2^31 - 1 (2 147 483 647).

Восьмеричная (Octal, base-8)

Стоит упомянуть восьмеричную систему: она используется в Unix для прав доступа к файлам (chmod 755). Префикс в Java: 0 — например, 0755 = 493. Будьте осторожны: int x = 010; — это не 10, а 8 (восьмеричный литерал).

Вывод

Двоичная система — основа работы аппаратуры, шестнадцатеричная — удобная компактная запись двоичных данных, десятичная — для человека. Java-разработчику важно уметь переводить между системами и понимать представление отрицательных чисел в дополнительном коде.

На собеседовании: junior-вопрос. Будьте готовы перевести число из двоичной в hex и обратно вручную (каждые 4 бита = 1 hex-цифра). Частая ловушка: int x = 010; — это 8, а не 10.