Я хочу преобразовать десятичные числа в шестнадцатеричное дополнение 8 битов.

  • Когда я делаю DEC2HEX(1,2) я получаю 01 что идеально.
  • Когда я делаю DEC2HEX(-1,2) я получаю FFFFFFFFFF что слишком много.

Как я могу ограничить вывод DEC2HEX(-1,2) только FF?

1 ответ1

3

Согласно документации Excel:

Если число отрицательное, places игнорируется и DEC2HEX возвращает 10 символов (40-бит) шестнадцатеричное число , в котором самый старший бит является знаковым битом. Остальные 39 бит являются битами величины. Отрицательные числа представляются в двухзначном обозначении.

Таким образом, вы должны усечь значение самостоятельно

=RIGHT(DEC2HEX(-1, 2), 2)

или же

=DEC2HEX(IF(A1 < 0, A1 + 256, A1), 2)

Другое решение

=DEC2HEX(BITAND(A1 + 256, 255), 2)

Часть + 256 предназначена для преобразования отрицательного значения в дополнение к его 2. Это работает только для 8-битных чисел. Для произвольных чисел дополнения n-бит 2 необходимо использовать + 2^n

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .