web-dev-qa-db-ja.com

脳を使用して16進数を10進数に変換する方法は?

そのような小さなことをするために電卓を開くのは私には不快に思えます。ここで、16進数を10進数に変換する方法をお聞きします。

その瞬間まで、次の式を使用します。

Hex:        Decimal:
12          12+6
22          22+2*6
34          34+3*6
49          49+4*6
99          99+9*6

C0やFBのような高い数値で次に進むと混乱します

使用している数式(脳、機能的ではない)は何ですか?

23
Ivan Prodanov

16進数が16進数であると考えると、実際には非常に簡単です。

最下位桁から始めて最上位(右から左)に向かって作業し、桁を16の累乗で乗算してから、結果を合計します。

例えば:

0x12 = 2 +(1 * 16)= 18

0x99 = 9 +(9 * 16)= 153

次に、A = 10、B = 11、C = 12、D = 13、E = 14、F = 15

そう、

0xFB = 11 +(15 * 16)= 251

37
Andre Miller

それは式ではありません。

式は次のとおりです。

X * 16 ^ yここで、Xは変換する数値、yは数値の位置(右から左へ)です。

つまり、DA145を10進数に変換する場合は、..

(5 * 16 ^ 0)+(4 * 16 ^ 1)+(1 * 16 ^ 2)+(10 * 16 ^ 3)+(13 * 16 ^ 4)

そしてあなたは手紙が次のとおりであることを覚えておく必要があります:
A-10
B-11
C-12
D-13
E-14
F-15

16
gbianchi

使用していた16進数が32ビットであることがわかったとき、私はほとんどこれをやめました。それほど楽しいことではありません。

小さい数値の場合、私は(最終的に)いくつかのパターンを記憶しました:10 = 16、20 = 32、40 = 64、80 = 128(100 = 256、80は1ビット少ないため)。 200 = 512私が覚えていたのは、以前使用していたマシンのページサイズが512だったためです(もはやどのマシンか覚えていません!)。 1000 =4096。これは別のマシンのページサイズだからです。

また、64 = 100、32 = 50、B8 = 200

これですべてです。それを超えて、私は付け加えます。

9
John Saunders

記録のために、あなたの脳は答えを見つける機能的な方法を使用しています。これが、私の脳が16進数の値を見つけるために使用する関数です。

  1. 16進数を個々の数字に分割します。
  2. 各桁を10進値に変換します(0〜9は同じで、Aは10、Bは11などです)。
  3. 右端の桁から開始して、各値に16 ^ X乗を掛けます。Xは右端の桁からの距離です(したがって、右端の桁は16 ^ 0、つまり1、次は16 ^ 1、16、次は16 ^) 2、または256など)
  4. すべての値を一緒に追加します。
7
Chris Lutz

E0hまでの20h、40hなどの10進値を記憶します。 (私はあなたがすでに100hを知っていると思います。)次に、1から16までの数値を加算または減算することにより、他の数値の10進数値を取得します。

3
Robert L

10進数値は

20h = 0x16^0 + 2x16^1 = 0x1 + 2x16 = 0 + 32 = 32

10進表記、または(32)10

ために 40hヘキサでは64 10進数、EOHの場合、224 10進数。

2
malik aamir

Wordの特定のインデックスの10進数値を決定する際に、すべての基数に対して一般化されます。

b^i*n

ここで、bはベース、iはWordのインデックス、nはインデックスの数値です。これは、b、i、n = bin =バイナリの省略形であることを覚えておいてください。

例:


base2(バイナリ)1 000の場合、1が配置されている場所の値を取得します。

b =ベース、つまりbase2:b = 2

word内のi = 0ベースのインデックス、つまり1000、1は3番目のインデックスにあるi =

n =インデックスにリストされた数、つまり1000、3番目のインデックスは1 --n = 1

したがって、2 ^ 3 * 1 = 8


base10(10進数)9 00の場合、9が配置されている場所の値を取得します。

b = 10、i = 2、n = 9:10 ^ 2 * 9 = 100 * 9 = 900


base16(16進数)0x0 f 0の場合、fが配置されている場所の値を取得します。

b = 16、i = 1、n = 15(0-9、a-f、f = 15):16 ^ 1 * 15 = 16 * 15 = 240


これは、Wordの各インデックスの値を決定するために使用でき、各値を合計して完全なWord値を決定できることに注意してください。

例えば1001、左から右(順序は重要ではありません):

(2 ^ 3 * 1 = 8)+(2 ^ 2 * 0 = 0)+(2 ^ 1 * 0 = 0)+(2 ^ 0 * 1 = 1)= 9

1
ferr

私はこれらのどれも役に立たなかったので、ここに私の方法があります:各文字を表すために2組の2進数に変換してから、全体の2進数表現を取り、10進数に変換します

例:AB

A/B

=バイナリの1010/1011

= 10進数で171(128 + 0 + 32 + 0 + 8 + 0 + 2 + 1)

0
Crumblez

これは、16の累乗を含まず、鉛筆と紙で実行できる別の方法です。

左端の数字から始めます。これに16を掛けて、左から2番目の数字を追加します。次に、結果に16を掛けて、左から3桁目に追加します。等々。

たとえば、0x20A5を10進数に:

  2 * 16 +  0 = 32
 32 * 16 + 10 = 522   (remember that A is 10 decimal)
522 * 16 +  5 = 8357

そして、変換の結果は8,357です。

0
kodkod