К списку статей

Поговорим о числах.



         Если вы всерьез хотите освоить компьютерную грамотность, то придется ломать привычные стереотипы. Мы привыкли в жизни, что все мы начинаем считать с единицы. Одно яблоко, первый день года, один рубль - тоже деньги. В информатике вопрос поставлен ребром и решен совершенно однозначно: ноль это тоже число. И, хотя, во многих случаях счет привычно начинать с единицы, есть много ситуаций, когда он (этот счет) начинается с нуля. Человек привычно загибает или разгибает пальцы: один, два, три..., но в компьютере все происходит по другому.
        Числа хранятся в ячейках памяти в двоичном виде. Основная (исходная) единица информации байт представлена восемью разрядами двоичной системы счисления: битами. То есть возникает ситуация, когда каждый из бит равен нулю. Это значит, что в памяти хранится число ноль. Глупо было бы пренебрегать такой ситуацией и исключить это число из использования, то есть начинать счет с единицы. Вот и получается, что если в этой ячейке хранится информация об адресе какой-то переменной в памяти, то этот адрес может быть нулевым. Если в этой ячейке хранится информация о цвете, то ноль это например: черный цвет, а это на самом деле так. Ну вот нет никакого цвета и все тут: полный ноль.
         Обычному человеку поначалу может быть непонятно, почему байт это число от 0 до 255. На самом деле все просто. Мы заранее не знаем какое число хранится в байте. Байт это ячейка памяти. Поэтому говорят, что байт может хранить информацию (число) о 256 состояниях объекта (например звука, цвета и т.д.).
        Возьмем двоичное число, у которого, например, единицы во всех разрядах 4-х битного числа. Эта комбинация дает нам число 15, а не 16, как можно подумать. А вот общее количество значений, которые могут хранится в 4-х разрядах двоичного числа равно 16. Поэтому, если вы будете считать числа в двоичной системе, то при установленных в единицу всех четырех разрядах двоичного числа, вы действительно получите число 15. Но это будет шестнадцатое состояние четырех бит этого числа. При подробном рассмотрении данной ситуации все кажется совершенно очевидно, но я даю вам гарантию, что при серьезном занятии информатикой, вы изредка будете забывать, что счет в компьютерных системах начинается с нуля. Что поделаешь, нас долго приучали к другому счету.
         Ну что, идем дальше. Программисты, кроме этой, так им понравившейся, двоичной системы счисления, изобрели еще и шестнадцатеричную. Это то еще зачем? Как мы уже поняли, при кодировании информации пришлось воспользоваться 8-ю битами двоичного числа. Но вы можете себе представить ситуацию, когда программисты пишут все числа в двоичной системе, я не могу. Это-же во первых длинно и неудобно, во вторых, не увидишь как и ошибешься. Поэтому двигатель человеческого прогресса: лень, а может еще что-то, заставили человека думать и это принесло результат. Раз неудобно записывать числа в двоичной системе, нужно изобрести другую. Десятичная система почему-то не понравилась: полный байт это 255, а два байта это вроде 510 что ли. Не привилась и восьмеричная система. Как там выглядит байт в восьмеричной: 377. Как то странно, не правда ли. И тут на выручку пришла шестнадцатеричная система счисления. Она оказалась на удивление наглядной и компактной. Числа в ней обозначили так: от 0 до 9 все идет, как обычно, а начиная с 10 и до 15 используем буквы английского алфавита от A до F. Например 10=A. 11=B... 15=F. И чем же, вы спросите, она удобна, а вот чем. Например число 255 в этой системе запишется, как FF. Красиво, не правда ли. Число 15 в десятичной в шестнадцатеричной 0F. Число 128 = 80. Замечательной особенностью является то, что каждую из двух частей числа, обозначающую байт в шестнадцатеричной системе очень легко интерпретировать в двоичное число, Наприме: F1 = 11110001, или F0 = 11110000, а 1F = 00011111.
         Вот таким образом и запись числа получается компактной, и в случае если специалисту требуется это число разложить по косточкам, извините, по битам он это может сделать моментально.
         Но как же теперь все эти числа отличать. А очень просто, договорились так: в конце числа ставить h(H), если оно шестнадцатеричное, b(B) если двоичное, и не ставить ничего или D, если десятичное.
         Теперь программисту все ясно: 101 - это сто один, 101B - это число 5 для десятичной системы, а 101H - это в десятичной 257.
         Вот так, пустое в арифметике число компьютерщики сделали важным, и хоть звучит это непривычно, но выражения: нулевая позиция, нулевое смещение, нулевой элемент в компьютерной технике встречаются очень часто.