В этой короткой статье я расскажу, как целые числа хранятся в памяти компьютера с использованием дополнения до двух. Если вы хотите узнать больше о памяти, вы можете прочитать мою предыдущую запись в блоге, Память в программировании на C🔗. Итак, без лишних слов, приступим!

Что такое целое число?

Целое число — это целое число (от латинского integer, означающее «целое») — это число, которое можно записать без дробной части.

Большинство языков программирования предоставляют тип данных, называемый «целое число», часто называемый для краткости «int». В компьютере целые числа хранятся с использованием 4 байтов (32 бита) памяти.

В контексте программирования целые числа — это целые числа, представленные в виде двоичных значений.

Двоичные числа

Двоичные числа — это числа, выраженные в системе счисления с основанием 2 или двоичной системе счисления, методе математического выражения, в котором используются только два символа: 0 (ноль) и 1 (один).

Все компьютерные данные представлены в двоичном формате, поэтому цифры 0 и 1. Двоичная цифра, или бит, является наименьшей единицей данных в вычислениях.

Положительные и отрицательные числа

Компьютеры должны хранить как положительные, так и отрицательные числа. Поскольку в двоичном формате доступны только два символа (0 и 1), нам нужно найти способ представления отрицательного и положительного знаков с помощью 0 или 1.

Формат дополнения до двух — это то, как компьютер хранит отрицательные числа.

В двоичном числе MSB (самый значащий бит), то есть самый левый бит, используется для указания, является ли число положительным или отрицательным.

  • В положительном числе старший бит будет равен 0.
  • В отрицательном числе старший бит будет равен 1.

Возьмем число 65. Его двоичное 8-битное представление (char) будет 01000001 или в 32-битной величине (int) оно будет выглядеть как на картинке ниже.

Дополнение до двух

Компьютер сохраняет отрицательное значение числа, используя дополнение до 2. Чтобы понять дополнение 2, нам нужно сначала взглянуть на дополнение 1.

В дополнении числа до 1 мы просто инвертируем двоичные биты числа, поэтому 0 становятся единицами и наоборот.

Итак, если мы останемся с 0100 0001 (65 по основанию 10), его дополнение до 1 будет 1011 1110.

Чтобы получить дополнение до 2, мы просто добавляем 1 к дополнению до 1. Таким образом, 0–65 будет 1011 1111 в двоичном формате.

Этот метод инвертирования и добавления единицы работает в обоих направлениях — если мы хотим вычислить от или до отрицательного/положительного.

Давайте посмотрим на другой пример — возьмем десятичное число 10.

  • Десятичный: 10
  • Двоичный: 0000 1010
  • Дополнение 1: 1111 0101
  • Дополнение до 2: 1111 0110

Как показано на картинке ниже 👇🏾

Я надеюсь, что вы нашли эту статью полезной. По любым вопросам, комментариям или если вы хотите просто поздороваться, свяжитесь со мной в LinkedIn или подпишитесь на меня на Medium.

Будьте счастливы и продолжайте программировать! 👩🏻‍💻

Ресурсы



Целое число — Википедия
Целое число (от латинского integer означает «целое
) в просторечии определяется как число, которое можно записать без…en.wikipedia .org»