Чтобы преобразовать (213AFE)H
в BCD, сначала оно должно быть преобразовано в двоичное, что дает (2177790)D
. Теперь каждая цифра преобразуется в свой код BCD, который дает (0010 0001 0111 0111 0111 1001 0000)BCD
.Преобразование с шестнадцатеричного в BCD
Другим способ заключается в преобразовании шестнадцатеричного значения в двоичный, который дает (0010 0001 0011 1010 1111 1110)B
, а затем сделать КОР отрегулировать путем добавления 6 к каждой цифре, превышающей 9 следующим образом:
0010 0001 0011 1010 1111 1110
+ 0110 0110 0110
-----------------------------
0010 0001 0100 0001 0110 0100 -> 35092368D
Конечный результат в процессах выше различен , Второй метод неправильный? Зачем?
Почему, по вашему мнению, второй метод верен? –
Если у вас есть десятичное преобразование, его очень легко кодировать в BCD. Все, что вам нужно, это цикл, деление и модуляция для получения цифр, а также операторы сдвига и сложения для создания кодировки BCD. –
Кроме того, вам обычно не нужно делать какие-либо преобразования * input *, если это числовое значение для начала, поскольку все данные хранятся в двоичном формате в любом случае, а шестнадцатеричные или десятичные - это просто способы представления двоичного числа. –