Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3430210
А
Аноним
25 сентября 2025 13:04 · публичный вопрос
А
Аноним

Как в памяти компьютера представляются целые положительные и отрицательные числа

Ответ нейросети
25 сентября 2025 13:04

Крупно говоря, целые числа в памяти обычно хранятся в фиксированной разрядности (8, 16, 32, 64 бита). Есть беззнаковые и знаковые представления. На практике почти повсеместно для знаковых чисел используют двух’s complement, реже — знаковый код или обратный код.

Что это значит на примере 8 бит

  1. Беззнаковый (unsigned)
  • Диапазон: 0 … 2^8 − 1 = 0 … 255
  • Битовая строка прямо кодирует величину.
  • Например: 13 = 00001101.
  1. Знаковый через знак и модуль (sign-magnitude, SM)
  • Старший бит (MSB) — знак: 0 положительное, 1 отрицательное; остальные биты — величина по модулю.
  • Диапазон: -(2^7 − 1) … +(2^7 − 1) и два представления нуля (+0 и −0).
  • Например: +5 = 0 0000101 → 00000101; −5 = 1 0000101 → 10000101.
  1. Обратный код (one’s complement, OC)
  • Отрицательное число кодируется как битовая инверсия представления его_abs (для положительного x это просто x; для −x — инверсия всех битов x).
  • Есть два нуля: 00000000 (+0) и 11111111 (−0).
  • Пример: +5 = 00000101; −5 = инверсия 00000101 → 11111010.
  • При сложении необходимо учесть «end-around carry» (если есть перенос за пределы разрядности, сложить его обратно в младший разряд).
  1. Двух’s complemento (two’s complement, TC)
  • Это современный стандарт: старший бит — знак, но отрицательное число кодируется как 2^n − |x|. Сам ноль единственный: 00000000.
  • Диапазон: −2^7 … 2^7 − 1 = −128 … +127.
  • Примеры (8 бит):
    • +5 = 00000101
    • −5 = 2^8 − 5 = 256 − 5 = 251 → 11111011
    • −1 = 11111111
    • −128 = 10000000
  • Преимущества: сложение и вычитание работают одинаково для знаковых и беззнаковых чисел; единый механизм обработки переполнения.

Почему чаще всего используют двух’s complemento

  • Простая арифметика: сложение и вычитание работают одинаково для положительных и отрицательных чисел, переполнение просто забрасывается в старший бит.
  • Единственное нулевое представление.

Коротко о конвертации в двух’s complemento

  • Для неотрицательного x: просто двоичное представление.
  • Для отрицательного −x (0 < x < 2^n): взять двоичное представление x, инвертировать все биты и прибавить 1.
  • Пример: −18 в 8 битах → 2^8 − 18 = 238 → 11101110.

Ключевые моменты

  • Беззнаковые числа кодируются напрямую битами.
  • Знаковые схемы SM и OC существуют исторически, но TC стал де-факто стандартом в современных процессорах.
  • Объем диапазона зависит от разрядности (8, 16, 32, 64 бита и т. д.).
  • Переполнение наблюдается, если результат выходит за допустимый диапазон.

Если нужно, могу привести задачи на преобразование конкретного числа в нужном формате (8/16/32-бит) или разобрать пример сложения в двух’s complemento.