|
|
<< Предыдущая страница | К оглавлению | www.mirmk.ru | Следующая страница>> |
Глава 2. Считаем по другому.Если вы всерьез собрались научиться разрабатывать настоящие микропроцессорные устройства, вам просто необходимо знать, как же компьютер хранит и обрабатывает числа. К сожалению (а может и к счастью) люди не придумали способа записывать в виде электронных сигналов числа в том виде, как мы их привыкли видеть. Поэтому математикам сначала пришлось потрудиться и придумать другой, более подходящий способ их представления. И они потрудились на славу! Придуман не один, а огромное множество способов представления чисел. Один из этих способов идеально подходит для реализации его при помощи электроники. Некоторые другие способы помогают удобнее представлять компьютерные данные на бумаге или на экране компьютера. Итак, что же это за способы? Любой грамотный человек хорошо знает, по крайней мере, два способа представления чисел. Это, широко распространенные, арабские цифры и изредка применяемые римские. Одно и тоже число можно записать как 2 или как II, как 5 или как V, как 22 или как XXII. Очевидно, что для каждого числа уже существуют два способа написания. Числа одинаковые, а способы написания разные. Ну а если есть два способа, почему бы ни быть и трем, четырем и т.д.? И математики нашли их. И не три, четыре. Они нашли универсальный способ, позволяющий теоретически создавать бесконечное количество способов представления чисел. Эти способы назвали системы исчисления. За основу взяли арабский способ представления чисел. Очевидно, что он гораздо более красивый, чем римский, так как подчиняется строгому закону. Судите сами. В привычной нам системе исчисления мы имеем 10 цифр: 1, 2, 3, 4, 5, 6, 7, 8, 9 и 0. При помощи этих цифр мы легко можем представить любое число. Для представления числа меньшие десяти мы используем одну из десяти возможных цифр. Для представления чисел от десяти и выше мы вводим новый разряд. В него мы записываем единицу. Подставляя в младший разряд по порядку те же десять базовых цифр, мы получаемем следующий десяток. Как только все цифры в младшем разряде перебраны, мы увеличиваем более старший разряд на единицу. И так, пока не переберем все цифры вплоть до 99. То есть, когда во втором разряде будут перебраны все цифры, мы вводим третий разряд. И так далее. Это строгое однообразное правило, как при помощи десяти значков, означающих десять цифр, представить любое мыслимое число! Такая система исчисления называется десятичной. Так как количество цифр, используемое для представления чисел равно десяти. Вот тут то и кроется простое, но гениальное решение. А почему именно десять? Видимо потому, что первобытные люди, которые изобретали эту систему, пользовались для счета пальцами рук. А их всего десять. А если бы природа распорядилась так, что у человека было бы, не по пять, а по четыре пальца на каждой руке? Тогда, наверно, мы бы имели восьмеричную систему исчисления! И как же такая система будет выглядеть? Ну во первых она будет иметь только восемь цифр. Например - 0, 1, 2, 3, 4, 5, 6 и 7. Ну а правила построения чисел, мы оставим те же. Числа от нуля до восьми мы запишем, так же как и в десятичной системе. Цифры 8 в восьмеричной системе нет. Поэтому мы поступим в строгом соответствии с правилами. Мы добавим новый разряд и запишем туда единицу. А в младшем у нас будет ноль. При этом число 8 в восьмеричной системе исчисления будет выглядеть как 10. В математике придуман способ записи чисел в различных системах исчисления, так, что бы было ясно в какой системе число записано. Десятичную систему еще называют системой исчисления по основанию десять. А восмиричная система – это, в свою очередь, система исчисления по основанию восемь. Так вот число восемь в десятичной системе записывается так - 810. А то же число в восьмеричной системе записывается следующим образом – 108. Маленькая цифра у каждого числа показывает основание системы исчисления, в которой оно записано. Продолжим записывать числа в восьмеричной системе исчисления, сравнивая их с теми же числами в десятичной системе: 910 = 118, 1010 = 128, 1110 = 138. И так далее до числа 16. Число 1510 = 178. А вот число 1610 запишется уже как 208. То есть опять выполняется одно из стандартных правил построения чисел: Как только значение одном из разрядов доходит до своего наибольшего значения, значение более старшего разряда увеличивается на единицу, а значение текущего разряда устанавливается равным нулю. Посмотрите несколько примеров записи чисел в восьмеричной системе исчисления: 3210 = 408, 13110 = 2038, 4210 = 528, 125410 = 23468, 34810 = 5348 и т. д. Используя эти универсальные правила, теоретически можно построить систему исчисления по любому основанию. Лишь бы хватило значков, обозначающих цифры. Реально же на практике нашли применения, кроме десятичной, восьмеричная, шестнадцатеричная, и двоичная системы исчисления. Причем именно двоичная система исчисления – та самая система представления чисел, которую инженеры без труда смогли реализовать при помощи электронных схем. Восьмиричная и шестнадцатиричная системы исчисления очень удобны для записи компьютерных данных на бумаге и на экране компьютера. Раньше, на заре развития компьютерной техники, широко использовали восьмиричную систему. Сейчас она почти забыта. Теперь более употребима шестнадцатиричная система исчисления. Разберем по подробнее две оставшиеся системы. В шестнадцатиричной системе исчисления, как вы догадались, используется шестнадцать цифр. Обычно применяют десять цифр из десятичной системы. А недостающие шесть цифр заменяют буквами латинского алфавита. Отсюда следует, что шестнадцатиричная система исчисления использует для записи чисел следующие цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E и F. При помощи этих цифр можно записать числа от нуля до пятнадцати. Число шестнадцать (1610) записывается, как 1016. Вот еще несколько примеров шестнадцатиричных чисел: 1710 = 1116, 2510 = 1916, 2610 = 1A16, 20610 = 0CE16, 69810 = 2BA16 Для того, что бы было более понятно, перед шестнадцатиричным числом, начинающимся с буквы, принято ставить ноль. Особое место занимает двоичная система исчисления. Она использует для записи любого числа всего две цифры. Это цифры 0 и 1. Естественно, что при помощи одного разряда, в двоичной системе можно записать только два числа: 0 и один. Число два в двоичной системе будет выглядеть как 102. Используя уже знакомые правила, запишем и все остальные числа: 310 = 112, 410 = 1002, 510 = 1012, 610 = 1102, 710 = 1112, 810 = 10002 и т. д. Если у вас есть компьютер, на котором установлен Windows, вы сами легко можете поэкспериментировать с переводом чисел из одной системы исчисления в другую. Для этого запустите стандартный калькулятор, входящий в Windows. Обычно он запускается через меню Пуск>Стандартные>Калькулятор. Войдите в меню «Вид» калькулятора и выберите «Инженерный». После этого вид калькулятора изменится. Вы увидите дополнительные буквенные клавиши для набора латинских букв в шестнадцатеричной системе исчисления. А в левой верхней части калькулятора появится переключатель систем исчисления. Он имеет четыре положения: Hex (шестнадцатеричная), Dec (десятичная), Oct (восьмеричная) и Bin (двоичная). Вы можете выбрать любую из систем исчисления, набрать на калькуляторе число, а затем переключить калькулятор на любую другую систему. Калькулятор тут же, автоматически, переведет набранное вами число в новую систему исчисления. Советую поэкспериментировать, таким образом, стараясь лучше понять, почему так, а не иначе представляется то или иное число в разных системах исчисления. Во всех вышеперечисленных системах исчисления возможны все арифметические операции, к которым мы привыкли в десятичной системе. То есть сложение, вычитание, умножение, деление. Правда на практике, никто не занимается восьмеричной и шестнадцатеричной арифметикой. Это не имеет никакого смысла. А вот арифметика в двоичной системе была подробно проработана. Надо же было обучить этому электронные устройства. Возьмем, например сложение. В двоичной системе исчисления оно делается точно так же, как и в десятичной. Только нужно помнить, что в этой системе каждый разряд может принимать значение либо 0, либо 1. Берем два двоичных числа и складываем их. Например, 10011001110 + 11000101110. Точно так же, как и в десятичной системе, начинаем складывать числа поразрядно, начиная с младшего разряда. Ноль плюс ноль получится, естественно ноль. Один плюс ноль и ноль плюс один дадут в результате один. При сложении двух единиц мы получим ноль в этом разряде и единицу переноса в следующий разряд. Вот результат сложения вышеприведенных чисел:
Умножение тоже делается так же, как в десятичной системе – столбиком. При этом очевидно, что любое число, умноженное на ноль, дает в результате ноль. А число, умноженное на единицу, дает в результате то же самое число. Вот пример умножения:
Как легко увидеть из примера, умножение в двоичной системе исчисления сводится к сдвигу первого числа (множимого) влево и сложению, полученных сдвигом чисел. Точно также легко убедиться, что деление в двоичной системе сводится к сдвигу и вычитанию. Это важно при построении вычислительных устройств. Именно поэтому многие простые микропроцессоры не имеют в составе своих команд, команд умножения и деления. Но обязательно, каждый процессор имеет команды сдвига, сложения и вычитания. Если программисту нужно деление, он всегда может составить небольшую подпрограмму умножения, используя команды сдвига и сложения. |
К оглавлению |