Понимание двоично-десятичных целых чисел - PullRequest
0 голосов
/ 04 ноября 2019

Я читаю книгу под названием Язык ассемблера для процессоров x86 . Ниже приведена выдержка о упакованных данных BCD .

3.4.8 Определение упакованных BCD-данных (TBYTE)

Intel хранит упакованные двоично-десятичные целые числа (BCD) в 10-байтовом пакете. Каждый байт (кроме старшего) содержит две десятичные цифры. В младших 9 байтах памяти каждый полубайт содержит одну десятичную цифру. В старшем байте старший бит указывает знак числа. Если старший байт равен 80h, число является отрицательным;если старший байт равен 00h, число является положительным. Целочисленный диапазон составляет от -999,999,999,999,999,999 до + 999,999,999,999,999,999.

Я никогда не слышал этого раньше. Из описания, только младшие 9 байтов используются для хранения части данных целого числа. Старший байт используется только для знака целого числа. Диапазон в выдержке доказал это. Однако почему эта кодировка использует байт для знака, в то время как она может использовать только 4 бита? Таким образом, он может использовать левые 4 бита для другой цифры, и диапазон будет от -9,999,999,999,999,999,999 до +9,999,999,999,999,999,999. Это так просто и ясно, что заставляет меня думать, что я, возможно, не полностью понимаю это.

...