Сделай Сам Свою Работу на 5

ПРЕДСТАВЛЕНИЕ ДАННЫХ В ПАМЯТИ ЭВМ





ЦЕЛЬ РАБОТЫ

 

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

 

ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ

 

Система счисления – это способ записи чисел с помощью заданного набора специальных знаков (цифр).

Система счисления должна обладать следующими свойствами:

- простота способа записи чисел на материальном носителе;

- удобство выполнения арифметических операций над числами в предложенной записи;

- наглядность обучения основам работы с числами.

 

Классификация позиционных систем счисления

 

Все многообразие систем счисления можно разделить на две группы:

1. Аддитивные (непозиционные) системы счисления.

2. Позиционные системы счисления.

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

Наиболее известной из аддитивных систем счисления является римская система счисления. В ней для обозначения чисел используются буквы латинского алфавита: I, V, X, L, C, D и M. Число в римской системе счисления обозначается набором стоящих подряд знаков. Значение числа определяется следующим образом:



1) суммируются значения идущих подряд нескольких одинаковых знаков (группа первого вида);

2) вычитаются значения двух знаков, если слева от большего знака стоит меньший, то есть от значения большего знака отнимается значение меньшего (группа второго вида).

Позиционные системы счисления – системы записи чисел, в которых значение цифры в записи числа зависит от ее позиции или местонахождения в числе.

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

Базис позиционной системы счисления – это последовательность чисел, каждое из которых задает значение цифры по ее месту в записи числа, то есть «вес» каждого разряда.

Приведем в качестве примера базисы некоторых традиционных систем счисления:



Десятичная система счисления: 1, 10, 102, 103, …, 10n.

Двоичная система счисления: 1, 2, 22, 23, …, 2n.

Восьмеричная система счисления: 1, 8, 82, 83, …, 8n.

Позиционные системы счисления бывают традиционными и нетрадиционными.

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

К традиционным системам счисления относятся двоичная, восьмеричная, десятичная и шестнадцатеричная системы счисления. Для записи чисел в десятичной системе счисления используются цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. В восьмеричной системе счисления: 0, 1, 2, 3, 4, 5, 6, 7, а восьмерка записывается двумя цифрами 10. Для записи чисел в шестнадцатеричной системе счисления необходимо располагать уже 16-ю различными символами, используемыми как цифры. В качестве первых десяти шестнадцатеричных цифр используются те же, что и в десятичной системе (0, 1, …, 9), для обозначения остальных шести цифр (в десятичной системе они соответствуют числам 10, 11, 12, 13, 14, 15) используют буквы латинского алфавита – A, B, C, D, E, F.

Позиционные системы счисления принято делить на следующие три класса:

1. Системы с целочисленным основанием:

a) единичная (унарная) система счисления, простейшая из позиционных систем счисления;

b) двоичная (применяется в дискретной математике, информатике и программировании);

c) троичная система счисления;

d) восьмеричная (применяется в программировании);

e) десятичная система счисления;

f) двенадцатеричная (широко использовалась в древности, в некоторых областях используется и сейчас);

g) шестнадцатеричная (наиболее распространена в программировании, а также в шрифтах);



h) сорокаичная система счисления (применялась в древности («сорок сороков = 1600»));

i) шестидесятеричная (применяется при измерении углов и, в частности, долготы и широты).

2. Системы с отрицательным основанием (нега-позиционные):

a) нега-двоичная система счисления (с основанием -2);

b) нега-десятичная система счисления (с основанием -10).

3. Системы с нецелочисленным основанием:

2,71… = e – e-ричная система счисления с основанием, равным числу Эйлера (применяется в натуральных логарифмах).

В общем виде для традиционных позиционных систем счисления базис можно записать в следующем виде:

.

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

К нетрадиционным системам счисления относятся факториальная, фибоначчиевая и уравновешенная. Базисы этих систем счисления выглядят следующим образом:

- факториальная – 1!, 2!, …, (n-1)!, n!;

- фибоначчиевая – 1, 2, 3, 5, 8, 13, 21, …;

- уравновешенная троичная – -1, 0, 1.

 

Преобразование чисел

 

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

, (1)

 

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

 

(2)

 

и

 

(3)

 

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

1) последовательного деления нацело целой части и образующихся целых частных на основание новой системы счисления;

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

При переводе целой части числа в ходе процесса последовательного деления получаются остатки, выраженные цифрами исходной системы счисления. Они представляют собой цифры , , …, целой части числа, переведенного в новую систему счисления. Последний остаток является старшей цифрой переведенного числа. Процесс деления продолжается до тех пор, пока частное не станет равным нулю.

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

Следует отметить, что все арифметические действия осуществляются по правилам исходной системы счисления.

Пример 1.

Требуется перевести число 30,6 в десятичной системе счисления в двоичную систему счисления.

Согласно вышесказанному переводим отдельно целую и дробную части числа.


Перевод целой части
последовательное деление остатки
30 : 2 = 15
15 : 2 = 7
7 : 2 = 3
3 : 2 = 1
1 : 2 = 0

 

Перевод дробной части
целая часть последовательное умножение
1 0,6 ∙ 2 = 1,2
0,2 ∙ 2 = 0,4
0,4 ∙ 2 = 0,8
0,8 ∙ 2 = 1,6
0,6 ∙ 2 = 1,2

1 1 1 1 0 , 1 0 0 1 1

30,610 = 11110,100112

 

Пример 2.

Требуется перевести число 111101,01 в двоичной системе счисления в десятичную систему счисления.


Перевод целой части
последовательное деление остатки
111101:1010 = 110 001
110 : 1010 = 0

 

Перевод дробной части  
целая часть последовательное умножение  
010 0,0100∙1010=010,1000
0,1000∙1010=101,0000
       

 


6 1 , 2 5

111101,012 = 61,2510

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

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

1) цифры исходного числа нумеруются справа налево начиная с нуля – для целой части числа и слева направо начиная с -1 – для дробной части;

2) каждая цифра числа переводится в число в десятичной системе;

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

 

Пример 3.

Требуется перевести число 111101,01 в двоичной системе счисления в десятичную систему счисления:

151413120110,0-11-22=

=1·25+1·24+1·23+1·22+0·21+1·20+0·2-1+1·2-2=61,2510

 

Пример 4.

Требуется перевести число 3E5A1 в шестнадцатеричной системе счисления в десятичную систему счисления:

34E352A11016 = 3·164+E·163+5·162+A·161+1·160 =

= 3·164+14·163+5·162+10·161+1·160 = 25539310

Еще более простой алгоритм применяется для работы с системами счисления, основание которых представляет собой ту или иную степень числа 2. К таким системам счисления относятся: двоичная, восьмеричная, шестнадцатеричная и т.д. Иногда подобные системы счисления называют смешанными. Для записи любой цифры числа, представленного в системе счисления, основание которой 2 в любой степени, необходимо количество двоичных цифр, равное значению данной степени. Например, для записи восьмеричного числа – три двоичные цифры, для записи шестнадцатеричного – четыре.

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

0002 = 08 0112 = 38 1102 = 68
0012 = 18 1002 = 48 1112 = 78
0102 = 28 1012 = 58  

Аналогично преобразуют двоичное число в шестнадцатеричное с той лишь разницей, что преобразуемое двоичное число делят на группы по 4 двоичных цифры в каждой, поскольку для записи любой цифры шестнадцатеричного числа необходимы четыре двоичные цифры:

00002 = 016 01002 = 416 10002 = 816 11002 = C16
00012 = 116 01012 = 516 10012 = 916 11012 = D16
00102 = 216 01102 = 616 10102 = A16 11102 = E16
00112 = 316 01112 = 716 10112 = B16 11112 = F16

Преобразование восьмеричного или шестнадцатеричного числа в двоичное осуществляется простым переводом каждой цифры исходного числа в группу из трех (для восьмеричного числа) или четырех (для шестнадцатеричного числа) двоичных цифр.

 

Пример 5.

11011110112 = 1 101 111 011 = 15738

11011110112 = 11 0111 1011 = 37B16

1238 = 001 010 011 = 10100112

A1716 = 1010 0001 0111 = 1010000101112

 

Арифметические операции

 

Арифметические действия над числами (сложение, вычитание, умножение и деление) в любой позиционной системе счисления производятся по тем же правилам, что и десятичной системе, так как все они основываются на правилах выполнения действий над соответствующими многочленами. При этом нужно только пользоваться теми таблицами сложения и умножения, которые соответствуют данному основанию b системы счисления.

Рассмотрим, как производятся арифметические действия над числами в двоичной системе счисления. Для этого приведем таблицы сложения и умножения в двоичной системе счисления (табл. 1 и 2).


 

Таблица 1

Таблица сложения

+
02 12
12 102

 

 

Таблица 2

Таблица умножения

02 02
02 12

 


Операции сложения и умножения производятся по тем же правилам, что и в десятичной системе счисления.

 

Пример 6.

Требуется сложить два числа в двоичной системе счисления:

 
+

 

Пример 7.

Требуется найти произведение двух чисел в двоичной системе счисления:

     
     
     
+    
 

Вычитание чисел в двоичной системе счисления может осуществляться двумя способами:

1) из большего по абсолютной величине числа вычитается меньшее, и у результата ставится соответствующий знак;

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

Для получения дополнительного кода отрицательного числа необходимо:

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

2) к полученному обратному коду прибавить единицу в младшем разряде.

 

Пример 8.

Требуется найти разность двух чисел в двоичной системе счисления: 101112 – 11012

Первый способ:

 
-  
   

Второй способ:

Получим дополнительный код числа 11012

1101 Þ 01101 (добавили один пустой разряд справа)

01101 Þ 10010 (заменили 0 Û 1)

10010 Þ 10011 (прибавили 1 в младшем разряде)

 
+

Игнорируем 1 переноса из старшего разряда и получаем результат, равный 010102.

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

 

Пример 9.

Требуется найти частное от деления двух чисел в двоичной системе счисления:

 

 
-    
           
    -      
               
                   

 

ПРЕДСТАВЛЕНИЕ ДАННЫХ В ПАМЯТИ ЭВМ

 

Основные положения

 

Любая информация (числа, команды, записи и т.п.) представляется в ЭВМ в виде двоичных кодов фиксированной или переменной длины. Отдельные элементы двоичного кода, имеющие значение 0 или 1, называют разрядами или битами. Двоичный код, состоящий из 8 разрядов, носит название байта. Для записи чисел также используют 32-разрядный формат (машинное слово), 16-разрядный формат (полуслово) и 64-разрядный формат (двойное слово).

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

 

Прямой код

 

Прямой код – способ представления двоичных чисел с фиксированной запятой в компьютерной арифметике. Главным образом используется для записи положительных чисел.

При записи числа в прямом коде старший разряд является знаковым. Если его значение равно 0 – то число положительное, если 1 – то отрицательное. В остальных разрядах, называемых цифровыми разрядами, записывается двоичное представление модуля числа.

Функция кодирования двоичных чисел (в том числе целых чисел и смешанных дробей) в прямом коде имеет вид:

, (4)

 

где n – номер знакового разряда. В частности, при кодировании правильных двоичных дробей (то есть чисел -1 < A < 1), n = 0 и функция кодирования принимает вид:

 

(5)

 

Величина числа A в прямом коде определяется по следующей формуле:

 

, (6)

 

где: – значение знакового разряда; число A имеет k разрядов справа от запятой (дробная часть) и n разрядов слева (целая часть), тут учитываются только цифровые разряды.

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

(n + 1)-разрядный прямой код (n цифровых разрядов и один знаковый) позволяет представлять целые числа в диапазоне и правильные двоичные дроби в диапазоне .

Примеры представления чисел в прямом коде приведены в табл. 3.

 

 

Таблица 3

Представление чисел в прямом коде

Десятичный код Двоичный код 8-разрядный прямой код
-5 -16   9/16 -9/16 105/128 -5/128 -101 -10000   0.1001 -0.1001 0.1101001 -0.0000101 00000000 – положительный ноль 10000000 – отрицательный ноль   0.1001000 1.1001000 0.1101001 1.0000101

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

Однако у прямого кода есть два недостатка:

1. В прямом коде есть два варианта записи числа 0 (например, 00000000 и 10000000 в восьмиразрядном представлении).

2. Использование прямого кода для представления отрицательных чисел в памяти компьютера предполагает или выполнение арифметических операций центральным процессором в прямом коде, или перевод чисел в другое представление (например, в дополнительный код) перед выполнением операций и перевод результатов обратно в прямой код.

Выполнение арифметических операций над числами в прямом коде затруднено, т.к. даже для сложения чисел с разными знаками требуется, кроме сумматора, иметь специальный блок-«вычитатель». Кроме того, при выполнении арифметических операций требуется особо обрабатывать значащий разряд, так как он не имеет веса. Также необходима обработка «отрицательного нуля». Таким образом, выполнение арифметических операций над числами в прямом коде требует сложной архитектуры центрального процессора и является малоэффективным.

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

 

Обратный код

 

Обратный код– метод вычислительной математики, позволяющий вычесть одно число из другого, используя только операцию сложения над натуральными числами. Ранее метод использовался в механических калькуляторах (арифмометрах). В настоящее время используется в основном в современной компьютерной технике.

Обратный n-разрядный двоичный код положительного целого числа состоит из одноразрядного кода знака (двоичной цифры 0), за которым следует (n-1)-разрядное двоичное представление модуля числа (обратный код совпадает с прямым кодом).

Обратный n-разрядный двоичный код отрицательного целого числа состоит из одноразрядного кода знака (двоичной цифры 1), за которым следует (n-1)-разрядное двоичное число, представляющее собой инвертированное (n-1)-разрядное представление модуля числа.

У числа 0 имеется два обратных кода: «положительный нуль» 00000000 и «отрицательный нуль» 11111111 (приведены
8-разрядные обратные коды).

n-разрядный обратный код позволяет представить числа в диапазоне .

Примеры представления чисел в обратном коде представлены в табл. 4.

 

Таблица 4

Примеры представления чисел в обратном коде

Десятичный код Двоичный код 8-разрядный обратный код
-0 -5 -101

Дополнительный код

 

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

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

Двоичное 8-разрядное число может представлять любое целое в диапазоне от -128 до +127. Если старший разряд равен нулю, то наибольшее целое число, которое может быть записано в оставшихся 7 разрядах равно .

В табл. 5 приведены примеры представления чисел в прямом и обратном коде.

 

Таблица 5

Примеры представления чисел в прямом и обратном коде

Десятичный код 8-разрядный двоичный код
прямой код дополнительный код
-1 -10

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.