Для чего нужно изучать системы счисления которые используются в компьютере
Какими они бывают
Системы счисления делятся на позиционные и непозиционные. В непозиционной системе счисления величина, обозначаемая символом, фиксирована и не зависит от его положения в записи числа.
Самая простая и самая древняя непозиционная система счисления – унарная. Помните нашего дикаря? В качестве базового символа в такой системе могло использоваться все что угодно: единичная линия, камешек, отдельный узелок на веревке. Сколько узелков (черточек, камешков) – такова величина числа. Недостаток очевиден: слишком длинная запись числа получается. Если я пишу про 10 коров – еще терпимо, а если про 100?
Чтобы сделать запись числа короче, додумались ввести отдельные обозначения еще для нескольких величин. В Древнем Египте это были числа, кратные 10:
В Древнем Риме: 1, 5, 1*10, 5*10 и т. д.
На Руси: 1, 2, … 9, 1 * 10, 2 * 10, … 9 * 10, 1 * 100 и т. д. Как и в Древнем Риме, для обозначения чисел использовались буквы со специальным символом – титло – над ними.
Недостатки, правда, у такой идеи прежние:
- слишком длинная запись, например, число 73 в римской системе записывалось как LXXIII;
- не самые простые правила трактовки записи;
- неудобно производить арифметические операции над числами.
Что такое бит, байт, нибл?
Фундаментальным электронным компонентом компьютерной памяти является бит . Бит, словно выключатель обычной лампочки может находится только в двух состояниях. В то время, как у выключателя эти позиции называются ВКЛ и ВЫКЛ, у бита эти состояния равны 1 и 0.
Так как мы не сможем хранить большие данные в одном бите, то компьютерная память организована таким образом, что биты объединены в группы из 8 бит. Группа из 8 бит называется байт . Половина байта (4 бита) иногда зовется ниблом .
Если мы представим, что 8 бит, содержащиеся в 1 байте, представлены в виде столбцов, каждый из которых может содержать только единицу или ноль, то мы можем увидеть, что компьютер использует систему счисления с базой равной двум. Термин двоичная система, значит состоит из двух частей. Таким образом это система, известная, как двоичная система счислений.
Я в 9-ом классе, и мы только начали работать в программировании, а и именно с Pascal, хотя на не обучают. Нам показывают готовый код и говорят списать и проверить работает ли программа, и все. Ничего не объясняют..
Алекс Куха Высший разум (398316) и правильно. Год назад вы должны были работать с Кумиром, не роботом, а с псевдокодом. Там, возможно, давались представления о циклах, переменных, условных операторах. Этого достаточно. ежели нет, то да, надо самостоятельно вникать. Это не задачки по химии/физике. Не ясно, искать в интернете, сюда вот вполне можно спросить. На 1й раз - списать и проверить вполне адекватная задача. Навыки работы с редактором, отладки. Как раз и есть оно самое
Затем, что числа надо как-то записывать. И как ты это сможешь сделать без системы счисления? ЛЮБОЙ способ записи чисел является системой счисления.
Любая программа по определению является алгоритмом. Нет алгоритма - нет программы.
Компу проще работать с 1 и 0 тк
1 это есть заряд
0 это его нет
Т. е. для стабильной работы и уменьшения клва ошибок
Ученые решили вопрос со стабильностью работы и эксперементируют какая система счисления станет более быстрой
На данный момент это шестнадцатиричная система счисления
Подробнее о переводе чисел читай в википедии
На данный момент это двоичная система счисления. Были эксперименты с десятичной и троичной системами, но они уже в далеком прошлом.
На данный момент это двоичная система счисления. Были эксперименты с десятичной, троичной и двоично-десятичной системами, но они в далеком прошлом.
Alexander Zalevski Мудрец (10190) Я читал о том насколько быстрая шестнадцатиричная но со стабильностью пока не все гладко Жуткая правда
Что значит быстрой? Система отображения информации за скорость никак не отвечает. Система счисления — это лишь то, что видит человек. Компьютеру же плевать, что видит человек.
Alexander Zalevski Мудрец (10190) Компьютер работает на своей волне но для человека все равно все отображает в привычном ему виде
о как. я всегда думал, что процессоры работают в двоичной системе счисления (за ооочень редким исключением), а оказывается они используют шестнадцатеричную. мой мир не будет прежним.
А я почему то думал что процессор работает с электрическими сигналами. А оказывается они работают с двоичной системой! По моему двоичная, восьмиричная, шестнадцатиричная системы это абстракция для описания электрических сигналов.
Андрей Журавлев Гуру (3163) ну да. вот только транзистор может находится в 2х состояниях. либо есть напряжение, либо нет. и вы это прекрасно понимаете. а разговаривать на "околорелигиозные темы" разряда "что было раньше курица или яйцо" как и "процессор реализует дсч или дсч является представление процессора". желание нет.
Десятичную систему счисления используют люди - как начали считать с помощью десяти пальцев на руке, так и пошло дальше. Двоичную - компьютеры: она проще. Шестнадцатиричная, по сути, просто более короткая запись чисел двоичной системы, она для человека, перевод из записи в шестнадцатиричной системе в двоичную и обратно очень прост и легко делается в уме, в отличие от десятичной.
Может быть, вы знаете?
Для каких целей создали little-endian? Этот обратный порядок начисто лишает мой мозг способности адекватно работать, когда в программе используется алгоритм, требующий поступающую информацию словами в big-endian. К концу я уже сама перестала понимать, где у меня что и куда в какой последовательности записывать.
Krab Bark Искусственный Интеллект (238849) little-endian упрощает адресацию чисел в программах. В программах для представления чисел отводится разное число байтов. в зависимости от предполагаемой максимальной величины числа. Если адресом числа считать адрес его старшего байта, то число в записях 5 и 0005 будет иметь разные адреса начала числа. А если писать 5 в стиле little-endian, то записи будут 5 и 5000, и адрес начала числа не зависит от длины его записи.
Байки тут травят какие то по поводу скорости системы счисления. Надо понимать что процессор работает с логическими сигналами 1 - есть напряжение 0 - нет напряжения. На основании этого и появилась двоичная система счисления. На тот момент существовали процессоры с другим количеством бит в байте, например 6 бит (были и 9 битные компьютеры), отсюда появилась восьмиричная система счисления т. к. одной цифрой описывались все состояния трех бит. И соответственно двумя цифрами описывался один байт для того компьютера. Потом байтом официально стало 8 бит и опять же для удобства появилась шестнадцатиричная система. Она как и в восьмиричной описывает все состояния для четырех бит и соответственно двумя цифрами можно описать все состояния байта.
Я Красавчег Просветленный (40115) из таблицы видно что от 0 и до F описываются все возможные состояния четырех разрядов двоичной
Вы делаете что-то не так.
html имеет такое же отношение к программированию, как выбор цвета ракеты к проектированию её двигателя.
А алгоритмы и системы счисления имею прямое отношение к программированию.
Алгоритм - это последовательность действий, направленная на получение результата. Например, алгоритм сборки портфеля - посмотреть расписание, выбрать нужные книги, положить в портфель, выбрать тетради и т. д. до тех пор, пока всё необходимое не будет учтено.
Системы счисления - более сложная тема. Здесь лучше открыть учебник информатики.
Ох уж эти безграмотные школьные учебники. Алгоритм не имеет никакого отношения к результату. Алгоритм - это то и только то, что можно определить посредством "машины Тьюринга", "нормальных алгорифмов Маркова", лямбда-исчисления и т. д.
Niis Просветленный (33472) Формальные свойства алгоритмов: <. >Результативность — завершение алгоритма определёнными результатами.
Изучение систем счисления, которые используются в компьютерах, важно для понимания того, каким образом производится обработка числовых данных в ЭВМ.
Система счисления — способ записи чисел с помощью заданного набора специальных символов (цифр) и сопоставления этим записям реальных значений. Все системы счисления можно разделить на непозиционные и позиционные. В непозиционных системах счисления, которые появились значительно раньше позиционных, смысл каждого символа не зависит от того места, на котором он стоит. Примером такой системы счисления является римская, в которой для записи чисел используются буквы латинского алфавита. При этом буква I всегда означает единицу, буква — V пять, X — десять, L — пятьдесят, C — сто, D — пятьсот, M — тысячу и т.д. Например, число 264 записывается в виде CCLXIV. Недостатком непозиционных систем является отсутствие формальных правил записи чисел и, соответственно, арифметических действий с многозначными числами. Правила выполнения вычислений с многозначными числами в позиционной системе счисления были разработаны средневековым математиком Мухамедом аль-Хорезми и в Европе были названы алгоритмами (от латинского написания имени аль-Хорезми – Algorithmi).
В вычислительной технике применяются позиционные системы счисления . Позиционных систем счисления существует множество и отличаются они друг от друга алфавитом — множеством используемых цифр. Размер алфавита (число цифр в нем) называется основанием системы счисления. Последовательная запись символов алфавита (цифр) изображает число. Позиция символа в изображении числа называется разрядом. Разряду с номером 0 соответствует младший разряд целой части числа. Каждому символу соответствует определенное число, которое меньше основания системы счисления. В зависимости от позиции (разряда) числа значение символа умножается на степень основания, показатель которой равен номеру разряда.
Таким образом, целое положительное число А в позиционной системе счисления можно представить выражением:
или , где p — основание системы счисления, целое положительное число; a — cимвол (цифра); n — номер старшего разряда числа.
Обозначения цифр берутся из алфавита, который содержит p символов. Каждой цифре соответствует определенный количественный эквивалент. Обозначение ak следует понимать как цифру в k-м разряде. Всегда выполняется неравенство: ak
Запись A(p) указывает, что число А представлено в системе счисления с основанием р:
Примером системы счисления является всем нам хорошо известная десятичная система счисления. Любое число в ней записывается с помощью цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Важно, что значение каждой цифры зависит от того места, на котором она стоит в этой записи. Например, 1575: цифра 5 в записи числа встречается дважды: цифра 5 в последнем разряде — число единиц, а цифра 5, находящаяся в записи числа левее, — число сотен. Т.к. значение каждой цифры (ее "вес") определяется той позицией, которую цифра занимает в записи числа, то система счисления называется позиционной. В десятичной системе счисления значение единицы каждого разряда в 10 раз больше единицы соседнего с ним правого разряда.
Само число 10 называется основанием системы счисления, а цифры, используемые в десятичной системе — базисными числами этой системы.
Но в качестве основания системы счисления можно выбрать любое целое число. Чтобы отличить, в какой системе счисления записано число, будем указывать основание системы счисления в виде индекса в десятичной системе счисления, заключенного в круглые скобки. Если основание системы счисления равно 10 или очевидно из контекста, то индекс будет опущен.
В компьютере для представления информации используются десятичная, двоичная и шестнадцатеричная системы счисления. Количество цифр, которое требуется для изображения числа в позиционной системе счисления , равно основанию системы счисления р. Например, для записи чисел в двоичной системе счисления требуется две цифры, в десятичной — десять, а в шестнадцатеричной — шестнадцать.
Двоичная система счисления имеет набор цифр , р=2. В общем виде, используя формулу (1), двоичное число можно представить выражением:
Например, число 101101(2) можно записать так:
101101(2) = 1*2 5 +0*2 4 +1*2 3 +1*2 2 +0*2 1 +1*2 0
Двоичная система счисления имеет особую значимость в информатике: внутреннее представление любой информации в компьютере является двоичным, т.е. описывается набором символов только из двух знаков 0 и 1.
Шестнадцатеричная система счисления имеет набор цифр , p = 16. Для изображения чисел в шестнадцатеричной системе счисления требуются 16 цифр. Для обозначения первых десяти цифр используются цифры десятичной системы счисления, шесть остальных — первых шесть прописных букв латинского алфавита. По формуле (1) шестнадцатеричное число может быть представлено так:
1. Число E7F8140 по формуле (4) запишется так:
Представление информации, хранящейся в памяти компьютера, в ее истинном двоичном виде весьма громоздко из-за большого количества цифр. Поэтому при записи такой информации на бумаге или выводе ее на экран принято использовать восьмеричную или шестнадцатеричную системы счисления. В современных компьютерах чаще используется шестнадцатеричная система счисления.
Полезно помнить некоторые степени двойки и шестнадцати.
k | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2 k | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096 |
16 k | 16 | 256 | 4096 | 65536 | 1048576 |
Соответствие чисел в различных системах счисления
Десятичная | Шестнадцатеричная | Двоичная |
0 | 0 | 0 |
1 | 1 | 1 |
2 | 2 | 10 |
3 | 3 | 11 |
4 | 4 | 100 |
5 | 5 | 101 |
6 | 6 | 110 |
7 | 7 | 111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | A | 1010 |
11 | B | 1011 |
12 | C | 1100 |
13 | D | 1101 |
14 | E | 1110 |
15 | F | 1111 |
Арифметические операции, выполняемые в позиционных системах счисления
В вычислительной технике наиболее часто выполняется операция сложения. Пусть заданы два целых положительных числа в позиционной системе счисления с основанием р. Запишем эти числа в виде:
Сумма этих чисел равна числу, которое может быть записано в аналогичном виде:
Вычисления выполняются по следующим правилам:
- операция сложения выполняется поразрядно, начиная с младших разрядов в слагаемых;
- в каждом одноименном разряде слагаемых суммируются соответствующие цифры и перенос из предыдущего разряда суммы;
- если сумма цифр одноименных разрядов слагаемых и переноса меньше основания системы счисления, то перенос в следующий разряд равен нулю, если равна или больше — то равен единице.
В качестве примера рассмотрим арифметические операции в двоичной системе счисления.
Арифметические операции над числами в двоичной системе счисления
Рассмотрим правила выполнения арифметических операций над однозначными числами. Представим их в виде таблиц.
Правила сложения | Правила вычитания | Правила умножения |
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 | 0 - 0 = 0 0 - 1 = -1 1 - 0 = 1 1 - 1 = 0 | 0 * 0 = 0 1 * 0 = 0 0 * 1 = 0 1 * 1 = 1 |
2. Найти разность двух чисел 10101(2) и 1010(2):
3. Умножить два числа 1011(2) и 101(2):
Перевод чисел из одной системы счисления в другую
Перевод чисел из одной системы счисления в другую составляет важную часть машинной арифметики. Рассмотрим основные правила перевода.
Для перевода чисел из любой системы счисления в десятичную можно воспользоваться выражением (1). Сначала в десятичную систему счисления переводится основание той системы, из которой осуществляется перевод, а затем цифры исходного числа. Результаты подставляются в выражение (1). Полученная сумма дает искомый результат.
Пример . Перевести в десятичную систему счисления числа С7(16) и 1010(2) :
С7(16) = 12*16 1 + 7*16 0 = 192 + 7 =199 (10) ;
1010 (2) = 1*2 3 + 1*2 1 = 8+2 10.
Эквивалентными являются алгоритмы для вычисления значения многочлена в некоторой точке х, заданные следующими формулами:
Запись (9) носит название вычислительной схемы Горнера.
Алгоритм, задаваемый формулой (9) требует меньше арифметических операций и сводится к выполнению последовательной цепочки операций умножения и сложения в порядке их записи слева направо, поэтому при переводе чисел в десятичную систему счисления можно воспользоваться схемой Горнера.
Чтобы перевести целую часть числа из десятичной системы счисления в систему с основанием р, необходимо разделить ее на р, остаток даст младший разряд числа. Полученное частное вновь делят на р — остаток даст следующий разряд числа и т.д.
Пример. Перевести десятичное число 25 в двоичную систему счисления:
25 : 2 = 12 (остаток 1);
12 : 2 = 6 (остаток 0),
6 : 2 = 3 (остаток 0),
3 : 2 = 1 (остаток 1),
1 : 2 = 0 (остаток 1).
Перевод чисел из десятичной системы счисления в шестнадцатеричную производится аналогично.
Для перевода целых чисел из десятичной системы счисления в систему счисления с основанием р:
- Последовательно делить заданное число и получаемые целые части на новое основание счисления (р) до тех пор, пока целая часть не станет меньше нового основания счисления.
- Полученные остатки от деления, представленные цифрами из нового счисления, записать в виде числа, начиная с последней целой части.
Преобразования чисел из двоичной в восьмеричную и шестнадцатеричную системы и наоборот просты потому, что числа 8 и 16 являются целыми степенями числа 2.
Для того, чтобы перевести число, записанное в восьмеричной системе в двоичный код, необходимо каждую цифру восьмеричного числа представить триадой двоичных символов. Лишние нули в старших разрядах отбрасываются. Например:
12345667(8) = 001 010 011 100 101 110 110 111(2) =
= 1 010 011 100 101 110 110 111(2).
Обратный перевод производится так: каждая триада двоичных цифр заменяется восьмеричной цифрой. Для правильного перевода число должно быть выровнено, т.е. число двоичных знаков должно быть кратно трем. Выравнивание производится простым дописыванием требуемого количества нулей перед старшим разрядом целой части числа. Например:
При переводах чисел между двоичным и шестнадцатеричным системами счисления используются четверки двоичных чисел — тетрады. При необходимости выравнивание выполняется до длины двоичного числа, кратной четырем. Например:
12345ABCDEF(16) = 1 0010 0011 0100 0101 1010 1011 1100 1101 1110 1111(2);
11001111010 1110(2) = 0110 0111 1010 1110(2) = 67AF(16).
При переходе из восьмеричной системы счисления в шестнадцатеричную и обратно используется вспомогательный, двоичный код числа. Например:
1234567(8) = 001 010 011 100 101 110 111(2)
= 0101 0011 1001 0111 0111(2) = 53977(16);
1267ABC(16) = 0001 0010 0110 0111 1010 1011 1100(2)
= 010 010 011 001 111 101 010 111 100(2) = 223175274(16).
Разберем, что из себя представляет двоичная система счисления
Система счисления, которой мы пользуемся каждый день называется десятичной, или, более верно — десятеричной. В ней используется десять разных символов (0,1,2,3,4,5,6,7,8,9) для обозначения любого цифрового значения. Во всех современных системах исчисления позиция цифры несет в себе ее значение. Так, например, числа 28 и 82 содержат в себе одинаковые цифры, но имеют два совершенно разных значения.
В начальной школе мы все, скорее всего, начинали изучение позиционной цифровой системы выписывая значения в столбик:
Для представления величины необходимо записать символ цифры в каждый соответствующий столбец. В таком виде для записи числа четыреста тридцать шесть необходимо записать символы следующим образом:
Если вы немного знакомы с математикой, то наименования столбцов можно заменить на значение десяти в степени:
Таким образом число под степенью основано на базе системы счисления. В обобщенном виде это можно представить так (за базу возьмем Б):
Б3 Б2 Б1 Б0
Компьютеры и двоичная система счисления
Ввиду устройства памяти современных компьютеров, вся информация хранимая памятью, будь то программные инструкции, цифры, текст, изображения, музыка или видео, все это хранится в виде последовательности цифр 1 и 0 .
А что с позиционной системой?
Позиционная система счисления устроена сложнее. В ней есть основание, определяющее «вес» разряда, а заодно количество цифр, которые используются для записи числа, сами цифры и разряд – место цифры в записи числа. Значение каждого числового знака (цифры) в записи числа зависит от его позиции (разряда)! Вот она, суть. Если в непозиционной системе все цифры – «рядовые» и имеют одинаковый вес, то в позиционной у нас шеренга – от новобранца до генерала; чем ближе к началу, тем «тяжелее» очередной боец.
Давайте разберемся, как это работает, на примере современной десятичной системы счисления. Пусть мы имеем запись числа, например: 12345. Что это означает:
5 * 100 + 4 * 101 + 3 * 102 + 2 * 103 + 1 * 104?
10 – основание системы счисления; степень, в которую возводится десятка, – номер разряда – позиции цифры в записи числа. Вот эта 10n и есть вес.
Для справки: нет единого мнения насчет того, кто изобрел современную, «арабскую», систему счисления, которую мы используем. Доподлинно известно, что в средневековую Европу ее принесли именно арабы, а широкое распространение она получила не ранее XVI века. Это была настоящая революция в математике! Дроби, простые и десятичные, а также «любимые» школьниками логарифмы появились после введения позиционной десятичной системы счисления.
Позиционную систему счисления можно построить по любому основанию. Принцип один и тот же: основание и набор цифр. Однако наибольшее практическое значение имеют двоичная, десятичная, восьмеричная и шестнадцатеричная. Причем последние две используются в основном не для вычислений, а для представления двоичного кода в форме, удобной для человека.
Зная, как устроены системы счисления, можно сформулировать правила перевода из одной системы в другую. Проще всего осуществлять перевод между системами, у которых
основания – степень одного числа: двоичной, восьмеричной, шестнадцатеричной. Сложнее переходить от десятичной записи к двоичной и т. п. и наоборот. Впрочем, это тема для отдельного разговора.
Что же такое система счисления?
Определение таково: символический метод записи чисел, представление чисел с помощью письменных знаков. Или: совокупность правил и приемов записи чисел с помощью набора цифровых знаков.
Итак, есть некие символы, необязательно цифры, и правила, определяющие то, как надо трактовать последовательность этих символов – число.
Кодирование информации
В качестве наименьшей единицы измерения информации принят 1 бит. 1 бит соответствует одному разряду в двоичной системе счисления. Эта система лежит в основе архитектуры компьютеров. Для представления всего многообразия величин в компьютере объединяют несколько двоичных разрядов. Поэтому более крупными единицами измерения И в компьютере являются: 1 байт = 8 бит; 1 Кбайт=210 байт; 1 Мбайт = 210 Кбайт; 1 Гбайт = 210 Мбайт.
Поскольку информация в компьютере хранится в дискретной форме, для ее записи используется некоторый конечный набор знаков, называемый алфавитом. Очень часто в качестве алфавита используется таблица кодов, содержащая около 256 знаков. Каждому знаку соответствует числовой код. Этот код хранит образ соответствующего знака в памяти компьютера. Для понимания системы кодирования информации необходимо рассмотреть правила преобразования числовых кодов в различные системы счисления.
Наиболее популярна таблица кодов ASCII. Она состоит из 16 строк и 16 столбцов, пронумерованных от 0 до F в 16-ричной системе счисления. Например, в столбце 4 и строке D таблицы расположена заглавная буква М латинского алфавита. Таким образом при записи текста с такой буквой, она будет храниться в памяти в виде кода 4D(16) или 77(10). Другие коды: "," - 2C; "j" - 6A; "2" - 32. Обычно последние 8 столбцов таблицы кодов содержат буквы национальных алфавитов, графические знаки. В большом количестве разновидностей таблицы кодов ASCII первая половина таблицы является неизменной, а вторая - переменной.
Числа кодируются особым образом. Например, целое число, в зависимости от типа, может кодироваться одним, двумя или четырьмя байтами. Для получения кода положительного целого числа достаточно перевести его из десятичной в двоичную систему счисления, например, десятичное число 12 кодируется как двоичное 00001100 (при однобайтовом типе числа). Отрицательные целые числа часто кодируются в так называемом дополнительном коде, когда старший двоичный разряд используется как признак отрицательности числа, а остальные разряды должны быть такими, чтобы сумма отрицательного числа и его модуля равнялась нулю. Так, десятичное число –1 будет представлено как двоичное 1111111111111111 (при двухбайтовом типе числа). Минимально допустимое двухбайтовое число — 32768 кодируется как 1000000000000000, а максимальное 32767 — как 0111111111111111.
Для вещественных чисел система кодирования является более сложной. Обычно для каждого числа часть байтов отводится для хранения мантиссы числа, а часть — для порядка числа.
Изучение любого языка высокого уровня обычно начинается с освоения основных команд и написания первых простейших программ. Но с ассемблером так сразу не получится. Это объясняется тем, что программы на ассемблере напрямую манипулируют устройствами компьютера, в первую очередь процессором и памятью. Языки высокого уровня скрывают от программиста все манипуляции с компьютерным «железом». Таким образом, чтобы научиться программировать на ассемблере, необходимо знать архитектуру компьютера.
1.1. Архитектура компьютера.
Успешное применение языка ассемблера невозможно без знания и понимания архитектуры компьютера и знания архитектуры конкретного процессора, для которого будет создаваться программа.
Архитектура компьютера – это логическая организация, структура и ресурсы компьютера, которые может использовать программист.
Архитектура компьютера включает в себя архитектуры отдельных устройств, входящих в компьютер. Хотя компьютер состоит из многих внешних и внутренних устройств, но реально программисту на ассемблере приходится работать только с тремя устройствами компьютерной системы: процессором, памятью и портами ввода-вывода. В сущности, эти три устройства определяют работу всего компьютера и работу всех внешних устройств подключенных к нему. Все эти три устройства соединены между собой при помощи трех основных шин: шиной данных (ШД), шиной адреса (ША) и шиной управления (ШУ) (рис. 1).
Рис. 1. Архитектура ЭВМ.
Процессор — электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (код программ), главная часть аппаратного обеспечения компьютера или программируемого логического контроллера.
Оперативная память предназначена для загрузки программ и для временного хранения различных данных, необходимых для работы программ.
Порты ввода-вывода предназначены для взаимодействия с пользователем и другими устройствами.
Шина (bus) – это группа параллельных проводников, с помощью которых данные передаются от одного устройства к другому:
- Шина данных (data bus) используется для обмена команд и данных между процессором и оперативной памятью, а также между устройствами ввода-вывода и ОЗУ.
- Шина управления (control bus) используется для передачи специальных сигналов, которые синхронизируют работу всех устройств, подключенных к системной шине. Например, процессор должен знать, когда можно читать информацию с шины данных. Для этого используется специальный сигнал готовности шины данных.
- Шина адреса (address bus) используется для указания адреса ячейки памяти в ОЗУ, к которой в текущий момент происходит обращение со стороны процессора или устройства ввода-вывода (чтение или запись).
Все три шины вместе образуют системную шину или ее еще называют магистраль.
1.2. Системы счисления.
Слово "компьютер" (computer) с английского языка переводится как "вычислитель", т. е. машина для проведения вычислений. И это полностью соответствует действительности, т. к. на уровне "железа" компьютер выполняет только простейшие арифметические операции с числами, такие как сложение и умножение.
Сердцем компьютера является процессор, называемый часто центральным процессором (ЦП) или микропроцессором. Именно центральный процессор выполняет все вычисления.
Так исторически сложилось, что практически все цифровые микросхемы, в том числе компьютерные процессоры, работают только с двумя разрешенными уровнями напряжения. Один из этих уровней называется уровнем логической единицы (или единичным уровнем), а другой — уровнем логического нуля (или нулевым уровнем). Чаще всего логическому нулю соответствует низкий уровень напряжения (от 0 до 0,4 В), а логической единице — высокий уровень (от 2,4 до 5 В). Два уровня напряжения было выбрано исключительно из-за простоты реализации.
Таким образом, можно образно представлять, что в электронной цепи компьютера "бегают" только цепочки ноликов и единичек. За этими цепочками нулей и единичек закрепилось название машинные коды. Точно также можно представлять, что в память компьютера, а также на магнитные, оптические и прочие носители записываются нолики и единички, которые в совокупности составляют хранимую информацию.
То есть компьютер способен воспринимать только нолики и единички, а для нас (людей) эти нолики и единички представляются через устройства вывода (дисплеи, принтеры, звуковые колонки и пр.) в виде текста, графических изображений и звуков.
Так как компьютер способен воспринимать только два управляющих сигнала: 0 и 1, то и любая программа должна быть ему представлена только в двоичных кодах, т. е. в машинных кодах. В старые добрые времена операторы первых ЭВМ программировали напрямую в машинных кодах, переключая специально предусмотренные для этого тумблеры, или пробивали двоичные коды на перфолентах и перфокартах, которые затем считывала ЭВМ и выполняла операции согласно этим кодам.
Однако записывать и запоминать огромные двоичные цепочки, первым программистам было неудобно, поэтому они стали вместо двоичной системы использовать другие системы счисления, например десятичную, восьмеричную или шестнадцатеричную. Для сравнения: двоичное число 11001000 будет представлено в десятичном виде как 200, а в восьмеричной и шестнадцатеричной соответственно как 310 и С8.
Стоит еще раз отметить, что недвоичные системы счисления первые программисты стали использовать исключительно для личного удобства. Компьютер не способен воспринимать десятичные, шестнадцатеричные или восьмеричные числа, а только и только двоичные коды!
Таким образом, операторы первых ЭВМ стали составлять свои программы в более удобной системе счисления (восьмеричной, шестнадцатеричной или другой), а потом переводить их в двоичный машинный код. Наибольшее распространение у первых программистов из всех систем счисления получила шестнадцатеричная система счисления, которая до сих пор является основной в компьютерном мире. И все из-за того, что в отличие от других систем счисления перевод из шестнадцатеричной системы счисления в двоичную систему и обратно осуществляется очень легко — вместо каждой шестнадцатеричной цифры, подставляется соответствующее четырехзначное двоичное число.
Хотя шестнадцатеричная система облегчила работу с машинными кодами, но создавать программу в шестнадцатеричном виде все равно очень не просто. В итоге родился язык ассемблера, который давал возможность писать программы на более понятном человеку языке и в то же время позволял легко переводить их в машинный код.
Язык ассемблера прозвали низкоуровневым языком, потому что он максимально приближен к машинному языку, а значит к "железу" компьютера. После языка ассемблера стали появляться высокоуровневые языки, такие как Бейсик, Паскаль, Фортран, Си, С++ и пр. Они еще более понятны человеку, но преобразование в машинный код высокоуровневых программ значительно сложнее, из-за чего размер кода, как правило, получается большим и менее быстрым по сравнению с ассемблерными программами.
Если операторы первых ЭВМ переводили свои программы в машинный код вручную, то сейчас эту работу выполняют специальные программы— трансляторы (англ, translator — переводчик). Для языков высокого уровня транслятор принято называть компилятором (англ, compiler — составитель, собиратель). Для языка ассемблера обычно тоже не используется слово транслятор, а говорят просто: "ассемблер". Таким образом, ассемблером называют, как язык программирования, так и транслятор этого языка.
Соответственно процесс работы ассемблера называют ассемблированием. Процесс работы компилятора называют компилированием. Процесс обратный ассемблированию, т. е. преобразование машинного кода в программу на языке ассемблера называют дизассемблированием.
1.3. Биты и байты.
Цифра в двоичной арифметике называется разрядом (или точнее "двоичным разрядом") и может принимать значение ноль или единица. В компьютерном мире вместо разряда часто употребляют название бит.
Таким образом, минимальной единицей информации в компьютерной системе является бит, который может принимать только значение 0 или 1. Однако минимальным объемом данных, которым позволено оперировать любой компьютерной программе является не бит, а байт. Байт состоит из восьми бит. Если программе нужно изменить значение только одного бита, то она все равно должна считать целый байт, содержащий этот бит. Биты в байте нумеруются справа налево от 0 до 7, при этом нулевой бит принято называть младшим, а седьмой — старшим (рис. 2).
Так как в байте всего восемь бит, а бит может принимать только два значения, то простой арифметический подсчет показывает, что байт может принимать до 2 8 =256 различных значений. Поэтому в байте могут быть представлены целые числа в диапазоне от 0 до 255, или числа со знаком от -128 до +127.
Однако не только байтами может оперировать компьютерная программа, но и более крупными единицами данных— словами, двойными словами и учетверенными словами. Слово состоит из двух байт, при этом биты с 0 по 7 составляют младший байт в слове, а биты с 8 по 15— старший (рис. 3). Понятно, что слово может принимать до 2 16 =65536 различных значений.
Двойное слово, как следует из самого названия, состоит из двух слов или четырех байт, а значит из 32-х бит, а два двойных слова составляют учетверенное слово (64 бита).
Существует еще более крупная единица, которая называется параграф и представляет собой 16 смежных байт.
Продолжаем разбирать темы из школьной программы в обработке для “чайников”. Сегодня поговорим о системах счисления. Что это вообще такое и кому они нужны? Вникаем вместе с доцентом кафедры «Информатика» ГГТУ Любовью Михайловой.
Малыш загибает пальчики на руке. Нечесаный, закутанный в шкуры человек рисует углем черточки на камне. Одетый в белоснежное жрец выводит изящные круги и завитушки на листе папируса… Я нажимаю NumLock на клавиатуре и набираю 12345… Что общего между мной и тем дикарем, выводящим черточку за черточкой? Мы записываем числа. Только я делаю это быстрее. И не только потому, что мой инструмент – компьютер – более совершенен. Я использую более удобный и совершенный принцип записи числа – другую, нежели он, систему счисления.
Читайте также: