Для представления информации в памяти ЭВМ (как числовой, так и не числовой) используется двоичный способ кодирования.

Элементарная ячейка памяти ЭВМ имеет длину 8 бит (байт). Каждый байт имеет свой номер (его называют адресом ). Наибольшую последовательность бит, которую ЭВМ может обрабатывать как единое целое, называют машинным словом . Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32, 64 битам и т.д.

Двоично-десятичное кодирование

В некоторых случаях при представлении чисел в памяти ЭВМ используется смешанная двоично-десятичная "система счисления", где для хранения каждого десятичного знака нужен полубайт (4 бита) и десятичные цифры от 0 до 9 представляются соответствующими двоичными числами от 0000 до 1001. Например, упакованный десятичный формат, предназначенный для хранения целых чисел с 18-ю значащими цифрами и занимающий в памяти 10 байт (старший из которых знаковый), использует именно этот вариант.

Представление целых чисел в дополнительном коде

Другой способ представления целых чисел - дополнительный код . Диапазон значений величин зависит от количества бит памяти, отведенных для их хранения. Например, величины типа Integer (все названия типов данных здесь и ниже представлены в том виде, в каком они приняты в языке программирования Turbo Pascal. В других языках такие типы данных тоже есть, но могут иметь другие названия) лежат в диапазоне от -32768 (-2 15) до 32767 (2 15 - 1) и для их хранения отводится 2 байта (16 бит); типа LongInt - в диапазоне от -2 31 до 2 31 - 1 и размещаются в 4 байтах (32 бита); типа Word - в диапазоне от 0 до 65535 (2 16 - 1) (используется 2 байта) и т.д.

Как видно из примеров, данные могут быть интерпретированы как числа со знаком , так и без знака . В случае представления величины со знаком самый левый (старший) разряд указывает на положительное число, если содержит нуль, и на отрицательное, если - единицу.

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

Дополнительный код положительного числа совпадает с его прямым кодом . Прямой код целого числа может быть получен следующим образом: число переводится в двоичную систему счисления, а затем его двоичную запись слева дополняют таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число.

Например, если число 37 (10) = 100101 (2) объявлено величиной типа Integer (шестнадцатибитовое со знаком ), то его прямым кодом будет 0000000000100101, а если величиной типа LongInt (тридцатидвухбитовое со знаком ), то его прямой код будет. Для более компактной записи чаще используют шестнадцатеричное представление кода. Полученные коды можно переписать соответственно как 0025 (16) и 00000025 (16) .

Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:

  1. записать прямой код модуля числа;
  2. инвертировать его (заменить единицы нулями, нули - единицами);
  3. прибавить к инверсному коду единицу.

Например, запишем дополнительный код числа -37, интерпретируя его как величину типа LongInt (тридцатидвухбитовое со знаком):

  1. прямой код числа 37 есть;
  2. инверсный код;
  3. дополнительный код или FFFFFFDB (16) .

При получении числа по его дополнительному коду прежде всего необходимо определить его знак. Если число окажется положительным, то просто перевести его код в десятичную систему счисления. В случае отрицательного числа необходимо выполнить следующий алгоритм.

Для представления информации в памяти ЭВМ (как числовой так и не числовой) используется двоичный способ кодирования.

Элементарная ячейка памяти ЭВМ имеет длину 8 бит (1 байт). Каждый байт имеет свой номер (его называют адресом). Наибольшую последовательность бит, которую ЭВМ может обрабатывать как единое целое, называют машинным словом. Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32 битам и т.д.

Для кодирования символов достаточно одного байта. При этом можно представить 256 символов (с десятичными кодами от 0 до 255). Набор символов персональных компьютеров чаще всего является расширением кода ASCII (American Standart Code of Information Interchange - стандартный американский код для обмена информацией).

В некоторых случаях при представлении в памяти ЭВМ чисел используется смешанная двоично-десятичная система счисления, где для хранения каждого десятичного знак нужен полубайт (4 бита) и десятичные цифры от 0 до 9 представляются соответствующими двоичными числами от 0000 до 1001. Например, упакованный десятичный формат, предназначенный для хранения целых чисел с 18-ю значащими цифрами и занимающий в памяти 10 байт (старший из которых знаковый), использует именно этот вариант.

Другой способ представления целых чисел - дополнительный код . Диапазон значений величин зависит от количества бит памяти отведенных для их хранения. Например, величины типа Integer лежат в диапазоне от
-32768 (-2 15) до 32677 (2 15 -1) и для их хранения отводится 2 байта: типа LongInt - в диапазоне от -2 31 до 2 31 -1 и размещаются в 4 байтах: типа Word - в диапазоне от 0 до 65535 (2 16 -1) используется 2 байта и т.д.

Как видно из примеров, данные могут быть интерпретированы как числа со знаком, так и без знаков. В случае представления величины со знаком самый левый (старший) разряд указывает на положительное число, если содержит нуль, и на отрицательное, если - единицу.

Вообще, разряды нумеруются справа налево, начиная с нуля.

Дополнительный код положительного числа совпадает с его прямым кодом . Прямой код целого числа может быть представлен следующим образом: число переводиться в двоичную систему счисления, а затем его двоичную запись слева дополняют таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число. Например, если число 37 (10) = 100101 (2) объявлено величиной типа Integer, то его прямым кодом будет 0000000000100101, а если величиной типа LongInt, то его прямой код будет. Для более компактной записи чаще используют шестнадцатеричный код. Полученные коды можно переписать соответственно как 0025 (16) и 00000025 (16) .

Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:

1. записать прямой код модуля числа;

2. инвертировать его (заменить единицы нулями, нули - единицами);

3. прибавить к инверсионному коду единицу.

Например, запишем дополнительный код числа -37, интерпретируя его как величину типа LongInt:

1. прямой код числа 37 есть1

2. инверсный код

3. дополнительный код или FFFFFFDB (16)

При получении по дополнительному коду числа, прежде всего, необходимо определить его знак. Если число окажется положительным, то просто перевести его код в десятичную систему исчисления. В случае отрицательного числа необходимо выполнить следующий алгоритм:

1. вычесть из кода 1;

2. инвертировать код;

3. перевести в десятичную систему счисления. Полученное число записать со знаком минус.

Примеры. Запишем числа, соответствующие дополнительным кодам:

a. 0000000000010111.

Поскольку в старшем разряде записан нуль, то результат будет положительным. Это код числа 23.

b. 1111111111000000.

Здесь записан код отрицательного числа, исполняем алгоритм:

1. 1111111111000000 (2) - 1 (2) = 1111111110111111 (2) ;

2. 0000000001000000;

3. 1000000 (2) = 64 (10)

Несколько иной способ применяется для представления в памяти персонального компьютера действительных чисел. Рассмотрим представление величин сплавающей точкой .

Любое действительное число можно записать в стандартном виде M*10 p , где 1 ≤ M < 10, р- целое число. Например, 120100000 = 1,201*10 8 . Поскольку каждая позиция десятичного числа отличается от соседней на степень числа 10, умножение на 10 эквивалентно сдвигу десятичной запятой на 1 позицию вправо. Аналогично деление на 10 сдвигает десятичную запятую на позицию влево. Поэтому приведенный выше пример можно продолжить: 120100000 = 1,201*10 8 = 0,1201*10 9 = 12,01*10 7 ... Десятичная запятая плавает в числе и больше не помечает абсолютное место между целой и дробной частями.

В приведённой выше записи М называют мантиссой числа, а р - его порядком . Для того чтобы сохранить максимальную точность, вычислительные машины почти всегда хранят мантиссу в нормализованном виде, что означает, что мантисса в данном случае есть число, лежащее между 1 (10) и 2 (10) (1 ≤ М < 2). Основные системы счисления здесь, как уже отмечалось выше,- 2. Способ хранения мантиссы с плавающей точкой подразумевает, что двоичная запятая находится на фиксированном месте. Фактически подразумевается, что двоичная запятая следует после первой двоичной цифры, т.е. нормализация мантиссы делает единичным первый бит, помещая тем самым значение между единицей и двойкой. Место, отводимое для числа с плавающей точкой, делится на два поля. Одно поле содержит знак и значение мантиссы, а другое содержит знак и значение порядка.



Персональный компьютер IBM PC с математическим сопроцессором 8087 позволяет работать со следующими действительными типами (диапазон значений указан по абсолютной величине):

Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 51, т.е. мантисса занимает младшие 52 бита. Черта указывает здесь на положение двоичной запятой. Перед запятой должен стоять бит целой части мантиссы, но поскольку она всегда равна единице, здесь данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Значение порядка храниться здесь не как целое число, представленное в дополнительном коде. Для упрощения вычислений и сравнения действительных чисел значение порядка в ЭВМ хранится в виде смещенного числа , т.е. к настоящему значению порядка, перед записью его в память, прибавляется смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль. Например, для типа Double порядок занимает 11 бит и имеет диапазон от 2 -1023 до 2 1023 , поэтому смещение равно 1023 (10) = 1111111111 (2) . Наконец, бит с номером 63 указывает на знак числа.

Таким образом, из вышесказанного вытекает следующий алгоритм для получения представления действительного числа в памяти ЭВМ:

1. перевести модуль данного числа в двоичную систему счисления;

2. нормализовать двоичное число, т.е. записать в виде М*2 p , где М - мантисса (ее целая часть равна 1 (2)) и р - порядок, записанный в десятичной системе счисления;

3. прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления;

4. учитывая знак заданного числа (0 - положительное; 1 - отрицательное), выписать его представление в памяти ЭВМ.

Пример. Запишем код числа -312,3125.

1. Двоичная запись модуля этого числа имеет вид 100111000,0101.

2. Имеем 100111000,0101 = 1,001110000101*2 8 .

3. Получаем смещенный порядок 8 + 1023 = 1031. Далее имеем 1031 (10) = 10000000111 (2) .

Вся информация в ЭВМ хранится в виде наборов бит, то есть комбинаций 0 и 1. Числа представляются двоичными комбинациями в соответствии с числовыми форматами, принятыми для работы в данной ЭВМ, а символьный код устанавливает соответствие букв и других символов двоичным комбинациям.

Для чисел имеется три числовых формата:

    двоичный с фиксированной точкой;

    двоичный с плавающей запятой;

    двоично-кодированный десятичный (BCD).

В двоичном формате с фиксированной точкой числа могут быть представлены без знака (коды) или со знаком. Для представления чисел со знаком в современных ЭВМ в основном применяется дополнительный код. Это приводит к тому, что, как показано ранее, отрицательных чисел при заданной длине разрядной сетки можно представить на одно больше, чем положительных. Хотя операции в ЭВМ осуществляются над двоичными числами, для записи их в языках программирования, в документации и отображения на экране дисплея часто используют более удобное восьмеричное, шестнадцатеричное и десятичное представление.

В двоично-кодированном десятичном формате каждая десятичная цифра представляется в виде 4 битного двоичного эквивалента. Существуют две основные разновидности этого формата: упакованный и неупакованный. В упакованном BCD-формате цепочка десятичных цифр хранится в виде последовательности 4-битных групп. Например, число 3904 представляется в виде двоичного числа 0011 1001 0000 0100. В неупакованном BCD-формате каждая десятичная цифра находится в младшей тетраде 8-битной группы (байте), а содержимое старшей тетрады определяется используемой в данной ЭВМ системой кодирования, и в данном случае несущественно. То же число 3904 в неупакованном формате будет занимать 4 байта и иметь вид:

xxxx0011 xxxx1001 xxxx0000 xxxx0100 .

Числа с плавающей запятой обрабатываются на специальном сопроцессоре (FPU - floating point unit), который, начиная с МП I486, входит в состав БИС микропроцессора. Данные в нем хранятся в 80-разрядных регистрах. Управляя настройками сопроцессора, можно изменять диапазон и точность представления данных этого типа (таблица 14.1 ).

Таблица 14.1.

Тип данных

Размер (бит)

Диапазон

Обрабатывающий блок

Целые без знака

1 двойное слово

Целые со знаком

1 двойное слово

2147483648...+2147483647

1 учетверенное слово

Числа с плавающей запятой

действительное число

с двойной точностью

≈(0.18*10 309)

с увеличенной точностью

≈(0.12*10 4933)

Двоично-десятичные числа

1 байт неупакованное

1 байт упакованное

10 байт упакованное

0...(99...99) 18цифр

Организация оперативной памяти

ОП является основной памятью для хранения информации. Она организована как одномерный массив ячеек памяти размером в 1 байт. Каждый из байтов имеет уникальный 20 битный физический адрес в диапазоне от 00000 до FFFFFh (здесь и далее для записи адресов используется шестнадцатеричная система счисления, признаком которой является символ h в конце кода). Таким образом, размер адресного пространства ОП составляет 2 20 = 1Мбайт. Любые два смежных байта в памяти могут рассматриваться как 16-битовое слово. Младший байт слова имеет меньший адрес, а старший - больший. Так шестнадцатеричное число 1F8Ah, занимающее слово, в памяти будет расположено в последовательности 8Ah, 1Fh. Адресом слова считается адрес его младшего байта. Поэтому 20 битовый адрес памяти может рассматриваться и как адрес байта, и как адрес слова.

Команды, байты и слова данных можно размещать по любому адресу, что позволяет экономить память вследствие ее более полного заполнения. Однако для экономии времени выполнения программ целесообразно размещать слова данных в памяти, начиная с четного адреса, так как микропроцессор передает такие слова за один цикл работы шины. Слово с четным адресом называется выровненным по границе слов. Невыровненные слова данных с нечетным адресом допустимы, но для их передачи требуется два цикла шины, что снижает производительность ЭВМ. Заметим, что необходимое количество циклов считывания слова данных инициируется микропроцессором автоматически. Следует иметь в виду, что при операциях со стеком слова данных должны быть выровнены, а указатель стека инициирован на четный адрес, так как в таких операциях участвуют только слова данных.

Поток команд разделяется на байты при заполнении очереди команд внутри микропроцессора. Поэтому выравнивание команд практически не влияет на производительность и не используется.

Адресное пространство ОП делится на сегменты. Сегмент состоит из смежных ячеек ОП и является независимой и отдельно адресуемой единицей памяти, которая в базовой архитектуре персональной ЭВМ имеет фиксированную емкость 2 16 = 64К байт. Каждому сегменту назначается начальный (базовый) адрес, являющийся адресом первого байта сегмента в адресном поле ОП. Значение физического адреса ячейки складывается из адреса сегмента и смещения ячейки памяти относительно начала сегмента (внутрисегментное смещение). Для хранения значений адреса сегмента и смещения используются 16-битовые слова.

Чтобы получить 20-битовый физический адрес, микропроцессор автоматически осуществляет следующие операции. Значение базового адреса сегмента умножается на 16 (сдвиг на 4 разряда влево) и суммируется со значением смещения в сегменте (рис. 14.3 ). В результате получается 20-битовое значение физического адреса. При суммировании может возникнуть перенос из старшего бита, который игнорируется. Это приводит к тому, что ОП оказывается как бы организованной по кольцевому принципу. За ячейкой с максимальным адресом FFFFFh следует ячейка с адресом 00000h.

Рис. 14.3. Схема получения физического адреса

Сегменты физически не привязаны к конкретному адресу ОП, и каждая ячейка памяти может принадлежать одновременно нескольким сегментам, так как базовый адрес сегмента может определяться любым 16-битовым значением. Сегменты могут быть смежными, неперекрывающимися, частично или полностью перекрывающимися. Вместе с тем, в соответствии с алгоритмом вычисления физического адреса, начальные адреса сегментов всегда кратны 16.

Логические и арифметические основы и принципы работы ЭВМ

Литература : версия для печати

Учебники к курсу

    Гуров В.В., Чуканов В.О. Основы теории и организации ЭВМ

    Варфоломеев В.А., Лецкий Э.К., Шамров М.И., Яковлев В.В. Архитектура и технологии IBM eServer zSeries Интернет-университет информационных технологий - ИНТУИТ.ру, 2005

    Богданов А.В., Корхов В.В., Мареев В.В., Станкова Е.Н. Архитектуры и топологии многопроцессорных вычислительных систем Интернет-университет информационных технологий - ИНТУИТ.ру, 2004

    Новиков Ю.В., Скоробогатов П.К. Основы микропроцессорной техники Интернет-университет информационных технологий - ИНТУИТ.ру, 2006

Список литературы

    Аванесян Г.Р., Лёвшин В.П. Интегральные микросхемы ТТЛ, ТТЛШ: Справочник М.: Машиностроение, 1993

    Атовмян И.О. Архитектура вычислительных систем М.: МИФИ, 2002

    Борковский А. Англо-русский словарь по программированию и информатике (с толкованиями) М.: Русский язык, 1990

    Бродин В.Б., Шагурин И.И. Микропроцессор i486.Архитектура, программирование, ин­терфейс М.:ДИАЛОГ-МИФИ,1993

    Гуров В.В. Синтез комбинационных схем в примерах М.: МИФИ, 2001

    Гуров В.В., Ленский О.Д., Соловьев Г.Н., Чуканов В.О. Архитектура, структура и организация вычислительного процесса в ЭВМ типа IBM PC М.: МИФИ, 2002. Под ред. Г.Н. Соловьева

    Каган Б.М. Электронные вычислительные машины и системы М.: Энер­го­атом­из­дат, 1991

    Казаринов Ю.М., Номоконов В.Н., Подклетнов Г.С. и др. Микропроцессорный ком­п­лект К1810: Структура, программирование, применение М.: Высшая школа, 1990. Под ред. Ю.М. Казаринова

    Корнеев В.В., Киселев А.В. Современные микропроцессоры М.: Нолидж, 1998

    Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088 М.:Радио и связь, 1987

    Майоров С.А., Новиков Г.И. Структура электронных вычислительных машин Л.: Машиностроение, Ленингр.отд-ие, 1979

    Никитин В.Д., Соловьев Г.Н. Операционнные системы М.:Мир, 1989

    Савельев А.Я. Прикладная теория цифровых автоматов М.: Высшая школа, 1987

    ГОСТ 15133-77. Приборы полупроводниковые, термины и определения

    ГОСТ 17021-75.Микроэлектроника, термины и определения

Логические и арифметические основы и принципы работы ЭВМ

Предметный указатель : версия для печати

ПОСТРАНИЧНО I А Б В Д З И К Л М Н О П Р С Т У Ф Ц Ч Ш Э

автомат Неймана

10 (1 ),

автомат Тьюринга

10 (1 ),

2 (1 , 2 , 3 , 4 ),

Кроме обычной алгебры существует специальная, основы которой были заложены английским математиком XIX века Дж. Булем. Эта алгебра занимается так называемым исчислением высказываний.

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

При этом сама алгебра выступает в качестве модели устройства. Это означает, что работа произвольного устройства указанного типа может быть лишь в каком-то отношении описана с помощью построений этой алгебры. Действительное реальное устройство физически работает не так, как это описывает алгебра логики. Однако применение положений этой теории позволяет сделать ряд полезных в практическом отношении обобщений.

... лекция 2, страница 1 »

12 (1 ), 14 (1 , 2 ),

аргумент

2 (1 , 2 , 3 ),

быстродействие

1 (1 , 2 ),

Быстродействие характеризуется задержкой распространения сигнала, вносимой одним элементарным элементом (конъюнктором, дизъюнктором и т. д.). ... лекция 1, страница 1 »

дешифратор адреса

12 (1 ),

диаграмма Вейча

4 (3 , 4 ),

дизъюнкция

2 (3 , 4 ),

Это сложное высказывание истинно тогда, когда истинно хотя бы одно высказывание, входящее в него. ... лекция 2, страница 4 »

запоминающее устройство

10 (2 ),

Запоминающее устройство, или память – это совокупность ячеек, предназначенных для хранения некоторого кода. Каждой из ячеек присвоен свой номер, называемый адресом... лекция 10, страница 2 »

импликантная матрица

4 (2 ),

Составляется импликантная матрица, колонки которой именуются конституентами единицы, а строки – простыми импликантами. ... лекция 4, страница 2 »

инверсия

2 (3 ),

инвертор

13 (1 ),

Квайн-Мак-Класки

4 (2 ),

кодирование команд

11 (1 , 2 ),

конъюнкция

2 (3 , 4 ),

Функция конъюнкции истинна тогда, когда истинны одновременно оба высказывания. ... лекция 2, страница 4 »

косвенная адресация

11 (2 ),

мантисса

7 (2 ),

машина Тьюринга

10 (1 ),

машинная бесконечность

9 (3 ),

микропроцессор

14 (1 , 2 ),

минимизация

3 (2 , 3 ),

При минимизации ФАЛ стремятся получить форму, в которой будет меньше букв, чем в исходной. По отношению к ДНФ эта форма называется сокращенной (Сок. ДНФ).

Смысл построения Сок. ДНФ заключается в том, что в нее входят такие элементарные произведения, которые своими единицами покрывают не одну единицу исходной функции, а несколько.

... лекция 3, страница 2 »

неполностью определенная функция

5 (1 ),

Неполностью определенной функцией является такая переключательная функция, значения которой на некоторых наборах аргументов могут быть произвольными (т.е. равными "0" или "1"). ... лекция 5, страница 1 »

обратный код

7 (5 ),

Обратным называется код, для которого в знаковом разряде положительного числа пишется "0", в цифровых - модуль числа, а для отрицательного - в знаковом разряде пишется единица, в цифровых - инвертированные разряды исходного числа. ... лекция 7, страница 5 »

однородность

6 (1 ),

12 (1 ),

относительная адресация

11 (2 ),

6 (2 , 3 , 4 ),

персональная ЭВМ

14 (1 , 2 ),

плотность упаковки

1 (1 ),

Важный показатель – плотность упаковки, количество единиц элементов, приходящихся на 1см 3 . ... лекция 1, страница 1 »

7 (2 ),

прямая адресация

11 (2 ),

прямой код

7 (4 , 5 ),

6 (1 , 2 , 3 ),

регистр адреса

12 (1 ),

регистр команд

12 (1 ),

регистровая память

14 (1 ),

сдвиг делителя

9 (1 ),

3 (1 , 2 , 3 ),

14 (1 , 2 ),

2 (1 , 2 ),

система счисления

6 (1 , 2 , 3 , 4 ),

Способ представления изображения произвольных чисел с помощью некоторого конечного множества символов назовем системой счисления. ... лекция 6, страница 1 »

способ адресации

11 (2 ),

сумматор

13 (2 ),

счетчик команд

12 (1 ),

точность

7 (1 , 2 ),

управляющий сигнал

12 (1 ),

физический адрес

14 (2 ),

фиксированная запятая

7 (1 , 2 , 4 ),

2 (1 , 2 , 3 , 4 ),

число с плавающей запятой

14 (2 ),

штрих Шеффера

5 (3 ),

элемент Неймана

10 (1 ),

Элемент Неймана (ЭН) – это устройство, которое на каждом такте пребывает в одном из конечного числа состояний r i R, образующих его алфавит... лекция 10, страница 1 »

ПОСТРАНИЧНО I А Б В Д З И К Л М Н О П Р С Т У Ф Ц Ч Ш Э

Источниками и носителями информации бывают сигналы любой природы: текст, речь, музыка и т.д. При этом хранение и перера­ботка инфор­мации в ее естест­венном виде неудобна, а иногда и невозможна. В таких слу­чаях применяется коди­рование. Ко­дом принято называть правило, по ко­торому со­поставляются различные алфавиты и слова (они появились в глу­бокой древно­сти в виде тайнописи, когда ими пользо­вались для засекречивания важ­ного со­общения ). Исторически пер­вый уни­версальный код, предназначенный для передачи со­обще­ний, связан с именем изобре­тателя телœеграфного аппарата Морзе и известен как аз­бука Морзе, где каждой букве или цифре соответст­вует своя последовательность из крат­ковременных, называемых точками, и длительных - тире сигналов, разделяе­мых пау­зами.

Компьютер, как из­вестно, может обрабатывать информацию, представ­ленную в чи­словой форме. Существуют различные способы записи чисел. Совокупность прие­мов записи и наименования чисел принято называть сис­темой счисления. Можно ука­зать два базовых класса, на которые разделя­ются системы счис­ления - пози­ционные и непо­зиционные . Примером по­зи­цион­ной системы счисле­ния явля­ется десятичная, непозиционной - римская сис­тема счисления.

В непозиционных системах количественное значение разряда определя­ется только его изображением и не зависит от его места (позиции ) в числе. В ней вводится ряд символов для представления базовых чисел, а остальные числа - результат их сложения и вычитания. Основные символы для обозна­чения десятичных разрядов в римской системе счисления: I – один, X – де­сять, C – сто, M – тысяча и их половины V – пять, L – пятьдесят, D – пять­сот. Натуральные числа записываются при помощи повторения этих цифр (к примеру, II – два, III – три, XXX – тридцать, CC – двести ). В случае если же боль­шая цифра стоит перед меньшей цифрой, то они складываются, если на­обо­рот – вычитаются (к примеру, VII – семь, IX – девять ). В непозиционных системах счисления не представля­ются дробные и отрица­тель­ные числа, по­этому нас будут интересовать только по­зицион­ные системы счисле­ния.

Система счисления принято называть позиционной, если значение числа в ней оп­ределяется как символами, принятыми в системе, так и положением (пози­цией ) этих символов в числе. Напри­мер:

123,45 = 1∙10 2 + 2∙10 1 + 3∙10 0 + 4∙10 –1 + 5∙10 –2 ,

или, в общем виде:

X (q) = x n -1 q n -1 + x n -2 q n -2 + … + x 1 q 1 + x 0 q 0 + x -1 q -1 + x -2 q -2 + … + x -m q –m .

Здесь X (q) – запись числа в системе счисления с основанием q ;

x I – натуральные числа меньше q, ᴛ.ᴇ. цифры;

n – число разрядов целой части;

m – число разрядов дробной части.

Записывая слева направо цифры число, мы получим закодированную за­пись числа в q -ичной системе счисления.

X (q) = x n-1 x n-2 x

1 x 0 , x -1 x -2 x -m .

В информатике, вследствие применения электронных средств вычисли­тельной техники, большое значение имеет двоичная система счисления, q = 2. На ранних этапах развития вычислительной техники арифметические операции с действительными числами производились в двоичной системе ввиду про­стоты их реализации в электронных схемах вычислительных машин. Отметим, что принци­п действия базовых элементов цифровых вычислительных машин осно­ван на двух устойчивых со­стояниях - проводится или нет электрический ток, или в каком направлении намагничен магнитный носитель и т.д. и для записи двоичного числа достаточно использовать только две цифры 0 и 1, соответствующих каждому из состояний. Таблица сложения и таб­лица ум­но­жения в двоичной системе будет иметь по четыре пра­вила. И для реализации поразрядной арифметики в компьютере потребуется вместо двух таблиц по сто правил в десятичной системе счисления две таб­лицы по четыре правила в двоичной.

0 + 0 = 0 0 * 0 = 0
0 + 1 = 1 0 * 1 = 0
1 + 0 = 1 1 * 0 = 0
1 + 1 = 10 1 * 1 = 1

Соответственно на аппаратном уровне вместо двухсот электронных схем – восœемь. При этом запись числа в двоичной системе счисления значи­тельно длиннее записи того же числа в десятичной системе счисления. Это гро­моздко и неудобно для использования, так как обычно человек может од­но­временно воспринять не более пяти-семи еди­ниц информации. По этой причине, на­ряду с двоичной системой счисления, в инфор­матике имеют хождение вось­меричная (в ней запись числа в три раза короче, чем в двоичной системе счисления ) и шестнадцатеричная системы счисления (в ней запись числа в четыре раза короче, чем в двоичной ).

Так как десятичная система для нас удобна и привычна, всœе арифмети­ческие действия мы делаем в ней, и преобразование чисел из произвольной недесятичной (q ≠ 10) на основе разложения по степеням q . Преобразование из десятичной в прочие системы счисления производится с помощью правил умножения и делœения. При этом целая и дробная части переводятся отдельно.

АЛФАВИТ 2-чной системы счисления: 0 1

АЛФАВИТ 8-ричной системы счисления: 0 1 2 3 4 5 6 7

АЛФАВИТ 10-чной системы счисления: 0 1 2 3 4 5 6 7 8 9

АЛФАВИТ 16-ричной системы счисления: 0 1 2 3 4 5 6 7 8 9 A B C D E F

Для перевода числа из десятичной системы счисления в любую другую систему счисления нужно делить «до упора» это число на основание той системы (основание системы - ϶ᴛᴏ количество символов в ее алфавите ), в которую переводим число, а потом прочесть остатки справа на­лево. Для пе­ревода числа из любой системы счисления в десятичную нужно умножить содержимое каждого разряда на основание системы в степени рав­ной поряд­ковому номеру разряда и всё сложить. Перевод числа из восьмеричной сис­темы в двоичную осуществляется заменой слева направо восьмеричной цифры тремя двоичными цифрами. Перевод числа из двоичной системы счисления в восьмеричную осуще­ствляется заменой справа налево каждой триады двоичных цифр на одну восьмеричную цифру.

Для перевода числа из десятичной системы счисления в любую другую систему счисления можно воспользоваться стандартной программой Каль­кулятор .

Набрав число и щелкнув на одном из переключателœей Hex , Dec , Oct или Bin , получим представление этого числа в соответствующей системе.

Как отмечалось, двоичная сис­тема счисле­ния, будучи естественной для ЭВМ, не удобна для восприятия чело­ве­ком. Большое количе­ство разря­дов двоичного числа по сравнению с соответ­ст­вующим десятичным, однооб­раз­ное чередование единиц и нулей является ис­точником ошибок и затруд­нений чтения двоичного числа. Для удобства записи и чтения двоичных чи­сел (но не для работы цифровых вычислительных машин! ), необходима бо­лее удоб­ная для записи и чтения система счис­ления. Такими являются сис­темы с ос­нова­нием 2 3 = 8 и 2 4 = 16, ᴛ.ᴇ. восьмеричная и шестнадцатеричная сис­темы счисления. Названные системы удобны тем, что в них, с одной сто­роны, обеспечивается чрезвычайно лег­кий перевод из двоичной сис­темы (а также обратный перевод ), т.к. основание системы – степень числа 2, с дру­гой - со­храняется компактный вид числа. Восьмеричная система широко ис­пользо­валась для записи машин­ных программ в ЭВМ 1 и 2 поколений. В на­стоящее время используется, в ос­нов­ном,

шестнадцатеричная система. Приведем пример соответствия шестна­дца­теричной и двоичной системы:

Пример для тетрад :

0000 = 0; 0001 = 1; 0010 = 2; 0011 = 3; 0100 = 4; 0101 = 5; 0110 = 6; 0111 = 7; 1000 = 8; 1001 = 9; 1010 = A; 1011 = B; 1100 = C; 1101 = D; 1110 = E; 1111 = F.

В ЭВМ используется представление информации в виде «машин­ного слова», длина которого равна некоторому числу бит, характерному для дан­ного типа ЭВМ. В ЭВМ первых поколений использовались ма­шинные слова различной длины, к примеру 45 бит и т.д., то есть не равные це­лому числу байт. В современных компьютерах длина слова обычно 4 или 8 байт (в пер­вых моделях персональных компьютеров было 1 или 2 байта ).

Слово в машинной памяти

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

В физическом мире любая информация должна быть как-то представлена. Читая любую статью (книгу, отзыв, заметку), опубликованную в интернете или отпечатанную на бумаге, мы воспринимаем текст и картинки. Изображение, которое мы видим, фокусируется на сетчатке наших глаз, в виде электрических сигналов передаётся в мозг, который распознаёт знакомые символы и таким образом получает информацию. В каком виде эта информация остаётся в нашей памяти - в виде образов, логических схем или чего-то ещё - может зависеть от обстоятельств её получения, поставленной цели и конкретного способа осмысления. Компьютерная техника более ограничена и работает с потоком нулей и единиц (так называемое двоичное кодирование информации).

Счисления, положенная в основу всей была выбрана исторически. Ещё в эпоху создания первых ламповых компьютеров инженеры задумались, как можно произвести кодирование информации, чтобы цена всего аппарата оказалась минимальной. Поскольку у электронной лампы возможны два режима действия - пропускает ток, блокирует его, двойка в основе казалась наиболее рациональной. При переходе к полупроводниковым устройствам этот вывод можно было пересмотреть, но инженеры пошли по накатанному пути, сохранив двоичную логику всё более совершенствующимся вычислительным машинам. Тем не менее физика полупроводников допускает и троичное кодирование информации в компьютере: кроме отсутствия заряда (троичный нуль), возможно наличие как положительного (+1), так и отрицательного (-1), что и соответствует трём возможным значениям трита - элементарной ячейки памяти. То же самое можно сказать и об электрическом токе: прямое либо обратное направление или же отсутствие тока вообще (тоже три значения).

Выбор троичной автоматически решил бы проблему кодирования отрицательных чисел, которая в двоичной системе решается введением так называемого инвертирования с учётом первого бита как знакового. О премудростях этой операции для двоичной системы много написано как в интернете, так и в литературе по языку Assember. В случае же троичной логики число могло бы записываться, к примеру, таким образом: «+00-0+0+-». Здесь «+» - экономная запись значения «+1», «-» соответственно - «-1», ну а ноль говорит сам за себя. При переводе на человеческий язык получилось бы следующее: +3^8 + 0 + 0 - 3^5 + 0 + 3^3 + 0 + 3^1 - 3^0 = 6561 - 243 + 27 + 3 - 1 = 6347. Преимущества троичной логики проявились бы и при работе с самыми разнообразными данными: если на некий вопрос предполагается односложный ответ, то двоичный бит может нести в себе один их двух ответов («да» либо «нет»), тогда как троичный трит - уже из трёх («да», «нет», «не определено»). Опытные программисты помнят, как часто нужно хранить один ответ именно из трёх возможных, поэтому для неопределённого значения приходится что-то выдумывать, к примеру - вводить в систему дополнительный параметр (двоичный): была ли она полностью определена к текущему моменту времени.

Двоичное кодирование информации неудобно и для работы с графическими изображениями. Человеческий глаз воспринимает три разных цвета: синий, зелёный и красный, в итоге каждый графический пиксель кодируется четырьмя байтами, из которых три указывают на интенсивность базовых цветов, а четвёртый считается резервным. Такой подход заведомо снижает эффективность компьютерной графики, но пока ничего лучше предложено не было.

С математической точки зрения троичный компьютер должен быть наиболее эффективным. Строгие выкладки достаточно сложны, но их результат сводится к следующему утверждению: эффективность вычислительной техники тем выше, чем ближе её родная система счисления к числу е (приблизительно равному 2,72). Легко видеть, что тройка к числу 2,72 значительно ближе, чем двойка. Остаётся надеяться лишь на то, что однажды инженеры, ответственные за выпуск электроники, обратят своё внимание на троичную систему счисления. Быть может, это и станет тем прорывом, после которого будет создан искусственный интеллект?


Close