Представление машинных слов в программе

Нa практике вместо двоичной системы используются восьмеричная и шестнадцатеричная системы счисления. Это объясняется тем, что одна восьмеричная цифра принимает значения от 0 до 7 и занимает три двоичных разряда. Аналогично шестнадцатеричная цифра принимает значения от 0 до 15, что соответствует четырем двоичным разрядам (тетрада). Поскольку обычных цифр для представления значений or 0 до 15 не хватает, то для недостающих используются прописные или строчные латинские буквы:

А - 10, В - 11, С - 12, D - 13, E - 14, F – 15.

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

0x1B8С = 0001 1011 1000 1100

1 B 8 С

И наоборот, представить в программе машинное слово с заданным сочетанием битов можно, переведя его из двоичного представления в шестнадцатеричную константу, разбив на тетрады и заменив значение каждой из них соответствующей цифрой 0..9 - А..F.

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

Например, если в константе требуется установить в 1 девятый разряд машинного слова, то он будет находиться в третьей справа цифре, содержащей разряды с номерами 8…11. Все остальные цифры будут нулевыми. Значение же этой цифры с установленным девятым разрядом будет равно 2. В результате получим константу 0х0200.

Аналогичным образом используются восьмеричные константы. В С++ любая константа, содержащая цифры от 0 до 7 и начинающаяся с 0, считается восьмеричной, например 0177556.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: