1.3.1.ПОНЯТИЕ СИСТЕМЫ СЧИСЛЕНИЯ.
Все фантастические возможности вычислительной техники (ВТ) реализуются путем создания разнообразных комбинаций сигналов высокого и низкого уровней, которые условились называть «единицами» и «нулями».
Система счисления(СС) - это система записи чисел с помощью определенного набора цифр.CС называетсяпозиционной, если одна и та же цифра имеет различное значение, которое определяется ее местом в числе. Десятичная СС является позиционной: 999.Римская СС является непозиционной. Значение цифры Х в числе ХХІ остается неизменным при вариации ее положения в числе.Количество различных цифр, употребляемых в позиционной СС, называется основанием СС.
Развернутая форма числа - это запись, которая представляют собой сумму произведений цифр числа на значение позиций.
Например: 8527=8*103+5*102+2*101+7*100
Развернутая форма записи чисел произвольной системы счисления имеет вид
, где
X - число;
a - основа системыисчисления;
i - индекс;
m - количество разрядов числа дробной части;
n - количество разрядов числа целой части.
Например: 327.46 n=3, m=2, q=10
Если основание используемой СС больше десяти, то для цифр вводят условное обозначение со скобкой вверху или буквенное обозначение.
Например: если 10=А, а 11=В, то число 7А.5В12 можно расписать так:
7А.5В12 = В·12-2 + 5 ·2-1 +А ·120 + 7 ·121.
В шестнадцатеричной СС основа - это цифры 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 с соответствующими обозначениями 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Примеры чисел: 17D.ECH, F12AH.
ДвоичнаяСС- это система, в которой для записи чисел используются две цифры 0 и 1. Основанием двоичной системы счисления является число 2.
Двоичный код числа - запись этого числа в двоичной системе счисления. Например,
0=02
1=12
2=102
3=112 …
7=1112
120=11110002.
В ВТ применяют позиционные СС с недесятичным основанием: двоичную, восьмеричную, шестнадцатеричную. Для обозначения используемой СС число снабжают верхним или нижним индексом, в котором записывают основание СС. Другой способ – использование латинских букв после записи числа:
D – десятичная СС
В – двоичная СС
О – восьмеричная СС
Н – 16-ричная СС.
Несмотря на то, что 10-тичная СС имеет широкое распространение, цифровые ЭВМ строятся на двоичных элементах, т.к. реализовать элементы с 10 четко различимыми состояниями сложно. Историческое развитие ВТ сложилось таким образом, что ЭВМ строятся на базе двоичных цифровых устройств: триггеров, регистров, счетчиков, логических элементов и т.д.
16-ричная и 8-ричная СС используются при составлении программ на языке машинных кодов для более короткой и удобной записи двоичных кодов – команд, данных, адресов и операндов.
Задача перевода из одной СС в другую часто встречается при программировании, особенно, на языке Ассемблера. Например, при определении адреса ячейки памяти. Отдельные стандартные процедуры языков программирования Паскаль, Бейсик, Си, HTML требуют задания параметров в 16-ричной СС. Для непосредственного редактирования данных, записанных на жесткий диск, также необходимо умение работать с 16-ричными числами. Отыскать неисправность в ЭВМ невозможно без представлений о двоичной СС.
В таблице приведены некоторые числа, представленные в различных СС.
Двоичные
числа
Восьмеричные
числа
Десятичные
числа
Шестнадцатеричные
числа
0
0
0
0
1
1
1
1
10
2
2
2
11
3
3
3
100
4
4
4
101
5
5
5
110
6
6
6
111
7
7
7
1000
10
8
8
1001
11
9
9
1010
12
10
A
1011
13
11
B
1100
14
12
C
1101
15
13
D
1110
16
14
E
1111
17
15
F
Во второй строчке видим операторы 'if' и 'then', которые переводятся с английского как 'если' и 'тогда' соответственно. Т. е. если, как бы, перевести вторую строчку на русский язык, то получим следующее:
"если a < 5 тогда"
Таким находящаяся после then функция выполняется только в том случае, если выражение между if и then верно.
Разберем фрагмент кода:
a := 10;
if a < 5 then
a := 5;
Понятно, что на первой строчке переменная 'a' приравнивается к 10. Затем на второй строчке идет условие a < 5. Подставляем 'a': 10<5 — неравенство не верно, поэтому 'a := 5; ' не будет выполнено в этой программе, и 'a' не изменилось, и по-прежнему равно 10.
Рассмотрим еще один фрагмент
a := 15;
if a > 10 then
a := 10;
В первой строке 'a' приравнивается к 15. Затем идет условие a>10, 15>10 — верно, поэтому выполняем следующую строку и приравниваем 'a' к 10. В итоге 'a' становится равным 10