Микропроцессор, будучи устройством электронным, воспринимает цифры, как комбинации электрических сигналов. Например, число может быть представлено так:
0 вольт соответствует цифре "0"
1 вольт соответствует цифре
"1"
...
9 вольт соответствует цифре "9"
При этом вероятность возникновения ошибки (например, из-за колебаний напряжения) очень велика. Наиболее надежным способом представления чисел в электронном устройстве, является двоичная система счисления:
0...0,5 вольт соответствует цифре "0"
2,5...5 вольт соответствует цифре
"1"
Такая разница между уровнями сигналов (соответствующих "0" и "1") практически исключает ошибки связанные с колебаниями напряжения и другими искажениями сигнала. Кроме того, значительно упрощается компонентная база компьютера.
Таким образом, двоичная система счисления стала единым стандартом представления чисел в любом "думающем" электронном устройстве.
Двоичная система оптимальна для разработки микропроцессорных систем, но очень неудобна для написания программ. Чтобы упростить процесс общения с микропроцессором, были разработаны программы, транслирующие шестнадцатеричные числа в двоичный код, и выполняющие обратное преобразование. Одной из таких программ является Debug.
Для вывода на экран чисел в шестнадцатеричном формате, Debug использует небольшую подпрограмму, которая переводит двоичные числа (обрабатываемые микропроцессором), в шестнадцатеричную форму.
Двоичные числа мы будем помечать индексом "b" (binary - двоичный), например: 10010111b.
| Номера разрядов | 3 | 2 | 1 | 0 |
| Весовые коэффициенты | ![]() |
![]() |
![]() |
![]() |
| Число | 1 | 1 | 0 | 1 |
Рассмотрим число 1101b. Все разряды числа характеризуются весовыми коэффициентами, которые получаются возведением основания системы счисления (два) в степень, соответствующую номеру разряда. Нумерация разрядов начинается с нуля.
Для перевода числа из двоичной системы в десятичную, необходимо
выбрать весовые коэффициенты тех разрядов, где есть единица (в случае числа
1101b, это:
,
и
). Далее нужно сложить эти числа:
+
+
= 13.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
+ + + = 210 | |||||||
Перевод числа 11010010b в десятичную форму:
Упражнение №5
Переведите следующие двоичные числа в десятичный формат:
1. 0110b 3. 0101b 5. 10111001b 7. 10101101b
2. 1011b 4. 1001b 6. 10011001b 8. 11111111b
По размеру двоичные числа делятся на следующие:
- бит 1
- полубайт 1011
- байт 1101 0011
- слово 1001 0110 0101 1110
Графически это разделение можно показать так:
знаковый бит бит байт
? ? ? ?
1001 0110 1101 0111
Y слово Y
| bin | hex | dec |
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | A | 10 |
| 1011 | B | 11 |
| 1100 | C | 12 |
| 1101 | D | 13 |
| 1110 | E | 14 |
| 1111 | F | 15 |
Рассмотрим таблицу, в которой отражено соответствие двоичных, шестнадцатеричных и десятичных чисел.
Из таблицы видно, что двоичная и шестнадцатеричная системы кратны между собой. Данную пропорциональность в размерности чисел можно сформулировать так:
Благодаря кратности, преобразования чисел из двоичной системы в шестнадцатеричную, выполняются очень просто. Двоичное число разбивается на декады (четырехбитные фрагметны):
1001001001011011b ® 1001.0010.0101.1011b
Каждая декада переводится в шестнадцатеричный формат, аналогично преобразованию чисел из двоичной системы счисления в десятичную:
1001b =+
= 9 ® 9
0010b == 2 ® 2
0101b =+
= 5 ® 5
1011b =+
+
= 11 ® B
1001.0010.0101.1011b = 925Bh
Упражнение №6
Переведите следующие числа в шестнадцатеричную форму:
1. 1111b 4. 1110b 7. 10101001b
2. 1010b 5. 1001b 8. 10001001b
3. 1011b 6. 1101b 9. 11111111b
Арифметические действия с двоичными числами выполняются аналогично действиям с десятичными числами. Например, сложение одноразрядных двоичных чисел выглядит так:
1
1 0 1
+0 +1 +1
1 1 10
Сложение четырехразрядных и восьмиразрядных двоичных чисел:
1111 111111
1101 13 + 3 = 16 01101110 110 + 90 = 200
+0011 +01011010
10000 11001000
Упражнение №7
Выполните следующие действия:
1. 0101 + 1100 3. 10100011 + 00110011
2. 1110 + 0011 4. 10110011 + 01011100
(проверку результатов выполните в шестнадцатеричной системе счисления)