"Classi c" PI C (ИСПОЛЬЗОВАНИЕ - ДИСПЛЕЙ)
ТЕОРИЯ:
Когда вы пишете PI C S9 (4) V9 (3) со значением USAGE
DISPLAY
, то есть без записи COMP-3, это BCD.
Таким образом, при записи числа, di git занимает один октет (то есть 8 бит) для хранения. Каждый октет можно разделить на два квартета, также известный как клев. Квартет - это группа из 4 битов. Таким образом, написание ди git занимает два квартета, то есть 2 * 4 бита, который добавляет до 8 бит = 1 октет.
При записи ди git первый квартет будет содержать значение, которое представляют знак, который несет ди git. Единственный ди git, который несет знак, является последним. Положительное значение равно C (как кредит) в шестнадцатеричном и 1100 в двоичном виде. Минус D (как дебет) в шестнадцатеричном и 1101 в двоичном. Нейтральная буква - F в шестнадцатеричном формате и 1111 в двоичном.
Второй квартет будет содержать двоичное значение для вашего di git. Например, если мой ди git равен 7, квартет будет 0111.
ПРИМЕР:
Если я возьму пример, который я написал выше, PI C S9 (4) V9 (3), оно имеет 4 + 3 = 7 цифр. Требуется 7 октетов для хранения. Допустим, я хочу сохранить число + 0036.421
, тогда 7 октетов будут 0033421
- First di git 0: 1111 0000; который в шестнадцатеричном формате: F0
- Второй ди git 0: 1111 0000; который в шестнадцатеричном формате: F0
- Третий ди git 3: 1111 0011; что в Хью: F3
- Четвертый ди git 6: 1111 0110; который в шестнадцатеричном формате: F6
- Пятый ди git 4: 1111 0100; который в шестнадцатеричном формате: F4
- Шестой ди git 2: 1111 0010; который в шестнадцатеричном формате: F2
- Седьмой ди git 1: 1100 0001; который в Hex это: C1. Это di git carr ie знак для целого числа. Первый квартет C, потому что число положительное.
COMP-3 PI C (десятичное число в упаковке)
THEORY : Как видите, вы занимает много места (7 октетов !!!) для написания довольно небольшого числа. для сравнения, в двоичном коде с семью октетами вы можете хранить 2 ^ 56 значений! Таким образом, чтобы сохранить некоторую память, существует другой формат, упакованный десятичный, который вы можете использовать, добавив COMP-3 к вашему объявлению.
В этом формате вместо сохранения di git в целом октете Возьми квартет. Хитрость заключается не в том, чтобы хранить знаки для цифр, которые не являются последними цифрами git. Потому что, как вы можете видеть выше, у большинства квартетов просто есть значение F для первого квартета, которые мало что передают или не дают никакой информации.
Последний квартет последнего октета содержит знак целого числа. Поэтому, если у нас есть n цифр, нам нужно n + 1 квартет для хранения числа в упакованном десятичном виде. Таким образом, пространство, занимаемое числом с n цифрами в упакованном десятичном числе, будет равно foor ((n + 1) / 2). То есть наименьшее число октетов, которое содержит n + 1 квартет.
ПРИМЕР: Мой pi c имеет длину 7 цифр, поэтому мне нужно 7 + 1 = 8 квартет = 4 октета.
- Первый октет: 0000 0000; в шестнадцатеричном формате это 00 (первое di git равно 0, второе di git равно 0)
- Второй октет: 0011 0110; у которого 36 в шестнадцатеричном формате (третий ди git равен 3, четвертый - 6)
- третий октет: 0100 0010; в шестнадцатеричном - 42 (пятый ди git равен 4, шестой - 2)
- четвертый октет: 0001 1100; который равен 1 C в шестнадцатеричном (седьмой ди git равен 1, а знак целого числа равен +)