Память в компьютере не безгранична. Из-за этого порой встречаются различные ошибки в работе программ. Давайте разберем одну из них: 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»
«0 + 0 = 0»
«1 + 1 = 10», переносим «1» в старший разряд
«0 + 0 = 0»
«0 + 0 = 0»
«1 + 0 = 1»
«0 + 0 = 0»
А что будет если мы сложим «1111 1111» и «0000 0001»?
Так как у нас компьютер может обработать всего 8 разрядов, а при сложении получилось 9 - то старший разряд «теряется».
В результате мы получаем результат «0000 0000», что равно числу «0». При 8 разрядной работе с памятью максимальное число, которое может обработать компьютер равно 255, а при данном сложении получается 256.
UPD Я постарался максимально упростить терминологию и умышленно опустить довольно сложные для понимания термины и нюансы. Буду рад получить обратную связь.