Рассмотрим, как в памяти компьютера хранятся данные.
Вообще, как компьютер может хранить, например, слово “диск”? Главный принцип
- намагничивание и размагничивание одной дорожки (назовем ее так). Одна
микросхема памяти - это, грубо говоря, огромное количество дорожек.
Сейчас попробуем разобраться. Например:
нуль будет обозначаться как 0000 (четыре нуля), один 0001,
два 0010, (т.е. правую единицу заменяем на 0 и вторую устанавливаем в 1).
Далее так:
три 0011
четыре 0100
пять 0101
шесть 0110
семь 0111
восемь 1000
девять 1001
и т.д.
Уловили принцип? “0” и “1” - это т.н. биты. Один бит, как вы уже заметили, может быть нулем или единицей, т.е. размагничена или намагничена та или иная
дорожка (”0″ и “1”
это условное обозначение). Если еще присмотреться, то можно заметить,
что каждый следующий установленный бит (начиная справа) увеличивает
число в два раза: 0001 в нашем примере = 1; 0010 два; 0100 четыре; 1000 восемь и т.д. Это и есть т.н. двоичная форма представления данных.
Т.о. чтобы обозначить числа от 0 до 9
нам нужно четыре бита (хоть они и не до конца использованы. Можно было
бы продолжить: десять 1010, одиннадцать 1011 ,
пятнадцать 1111).
Компьютер хранит данные в памяти именно
так. Для обозначения какого-нибудь символа (цифры, буквы, запятой,
точки…) в компьютере используется определенное
количество бит. Компьютер “распознает” 256 (от 0 до 255) различных
символов по их коду. Этого достаточно, чтобы вместить все цифры (0 -
9), буквы латинского
алфавита (a - z, A - Z), русского (а - я, А - Я), а также другие
символы. Для представления символа с максимально возможным кодом (255)
нужно 8 бит. Эти 8 бит
называются байтом. Т.о. один любой символ - это всегда 1 байт (см. рис.1).
0 1 0 1 1 0 1 0
р н р н н р н р
Рис. 1. Один байт с кодом буквы Z
(буквы н и р обозначают: намагничено или размагничено соответственно)
Можно элементарно проверить. Создайте в
текстовом редакторе файл с любым именем и запишите в нем один символ,
например, “М” (но не нажимайте Enter!).
Если вы посмотрите его размер, то файл будет равен 1 байту. Если ваш
редактор позволяет смотреть файлы в шестнадцатеричном формате, то вы
сможете узнать и код
сохраненного вами символа. В данном случае буква “М” имеет код 4Dh в
шестнадцатеричной системе, которую мы уже знаем или 1001101 в двоичной.
Т.о. слово “диск” будет занимать 4
байта или 4*8 = 32 бита. Как вы уже поняли, компьютер хранит в памяти
не сами буквы этого слова, а
последовательность “единичек” и “ноликов”. “Почему же тогда на экране
мы видим текст, а не “единички-нолики”? - спросите вы. Чтобы
удовлетворить ваше
любопытство, я забегу немного вперед и скажу, что всю работу по выводу
самого символа на экран (а не битов) выполняет видеокарта
(видеоадаптер), которая находится в вашем компьютере. И если бы ее не
было, то мы, естественно, ничего бы не видели, что у нас творится на
экране.
В Ассемблере после двоичного числа
всегда должна стоять буква “b”. Это нужно для того, чтобы при
ассемблировании нашей программы Ассемблер смог отличать
десятичные, шестнадцатеричные и двоичные числа. Например: 10 - это
“десять”, 10h - это “шестнадцать” а 10b - это “два” в десятичной
системе.
Т.о. в регистры можно загружать двоичные, десятичные и шестнадцатеричные числа.
Например:
mov ax,20
mov bh,10100b
mov cl,14h
В результате в регистрах AX, BH и CL будет находится одно и тоже число, только загружаем мы его в разных системах. Компьютер же будет хранить его в
двоичном формате (как в регистре BH).
Итак, подведем итог. В компьютере вся
информация хранится в двоичном формате (двоичной системе) примерно в
таком виде: 10101110 10010010 01111010
11100101 (естественно, без пробелов. Для удобства я разделили биты по
группам). Восемь бит - это один байт. Один символ занимает один байт,
т.е. восемь бит.
По-моему, ничего сложного. Очень важно уяснить данную тему, так как мы
будем постоянно пользоваться двоичной системой, и вам необходимо знать
ее на
“отлично”.
Как перевести двоичное число в десятичное:
Надо сложить двойки в степенях, соответствующих позициям, где в двоичном стоят единицы. Например:
Возьмем число 20. В двоичной системе оно имеет следующий вид: 10100b
Итак (начнем слева направо, считая от 4 до 0; число в нулевой степени всегда равно единице (вспоминаем школьную программу по математике)):
10100b = 1*24 + 0*23 + 1*22 + 0*21 + 0*20 = 20
———————————————
16+0+4+0+0 = 20
Как перевести десятичное число в двоичное:
Можно делить его на два, записывая остаток справа налево:
20/2 = 10, остаток 0
10/2=5, остаток 0
5/2=2, остаток 1
2/2=1, остаток 0
1/2=0, остаток 1
В результате получаем: 10100b = 20
Как перевести шестнадцатеричное число в десятичное:
В шестнадцатеричной системе номер позиции цифры в числе соответствует степени, в которую надо возвести число 16:
8Ah = 8*16 + 10 (0Ah) = 138
В настоящий момент есть множество калькуляторов, которые могут считать и переводить числа в разных системах счисления. Например, калькулятор Windows, который должен быть в инженерном виде. Очень удобен калькулятор и в DOS Navigator’е. Если у вас есть он, то отпадает необходимость в ручном переводе одной системы в другую, что, естественно, упростит вам работу. Однако, знать этот принцип крайне важно!