1. ホーム
  2. c

[解決済み] 負の16進数から10進数への変換方法

2022-03-06 17:55:40

質問

16進数を2進数に変換して、各ビットに2の累乗をかけ、結果を得るためにすべての値を合計することなく、簡単に16進数の負の値(補完符号化)を10進数に変換することが可能である方法を知りたいのですが、それにはあまりにも多くの時間がかかります。 数値の例(32ビット):0xFFFFFE58

どうすればいいのでしょうか?

どのように解決するのですか?

コンピュータを使わなくても、このように計算することができます。

0xFFFF FE58 = - 0x1A8 = -(1 * 16² + 10 * 16 + 8) = -(256 + 160 + 8) = -424

0xFFFF FE58 は2の補数で負の数です。絶対値を得るには、すべてのビットを反転させ、2進数で1を足す必要があります。また、範囲外の最初の数(0x1 0000 0000)からこの数を減算することもできます。

 0x100000000
-0x0FFFFFE58
      =
 0x0000001A8

今、私たちは、あなたの番号が -0x1A8 .ここで、各桁に位取りを掛けて足し算する必要があります。8 * 16^0 + A (これは10です) * 16^1 + 1 * 16^2 = 424. つまり、この数値の10進数は-424です。