Найти в Дзене
IT - это просто

1+1=0! Как считает компьютер?

Память в компьютере не безгранична. Из-за этого порой встречаются различные ошибки в работе программ. Давайте разберем одну из них: 1+1=0?

Многие слышали или знают, что компьютер представляет информацию в виде 0 и 1. Почему именно так рассказано в статье «Аналоговый и цифровой сигнал, в чем разница?».

И у компьютера есть разряды: 8 бит, 16 бит, 32 бита, 64 бита и т.д.

1 бит несет в себе информацию о 2 возможных значениях: 0 и 1.

2 бита несет в себе информацию о 4 возможных значениях: 00, 01, 10 и 11.

8 бит - 256 значений: от. 0000 0000 до 1111 1111.

Разряд - это максимальное количество последовательных бит, которые может обработать компьютер, т.е. какое максимальное целое число помещается в памяти. Не путайте с размером памяти, память хранит сами значения.

Так как компьютер представляет информацию в виде 0 и 1, то и его арифметические операции происходят в двоичной системе.

Тогда при работе с 8 разрядами значение «0000 0000» - это число «0», а «1111 1111» - это число «255».

Давайте попробуем сложить в столбик числа «0100 0100» и «0000 0101».

«0 + 1 = 1»

-2

«0 + 0 = 0»

-3

«1 + 1 = 10», переносим «1» в старший разряд

-4

«0 + 0 = 0»

-5

«0 + 0 = 0»

-6

«1 + 0 = 1»

-7

«0 + 0 = 0»

А что будет если мы сложим «1111 1111» и «0000 0001»?

-8

Так как у нас компьютер может обработать всего 8 разрядов, а при сложении получилось 9 - то старший разряд «теряется».

255 + 1 = 0
255 + 1 = 0

В результате мы получаем результат «0000 0000», что равно числу «0». При 8 разрядной работе с памятью максимальное число, которое может обработать компьютер равно 255, а при данном сложении получается 256.

UPD Я постарался максимально упростить терминологию и умышленно опустить довольно сложные для понимания термины и нюансы. Буду рад получить обратную связь.