そのような小さなことをするために電卓を開くのは私には不快に思えます。ここで、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のような高い数値で次に進むと混乱します
使用している数式(脳、機能的ではない)は何ですか?
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
それは式ではありません。
式は次のとおりです。
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進数が32ビットであることがわかったとき、私はほとんどこれをやめました。それほど楽しいことではありません。
小さい数値の場合、私は(最終的に)いくつかのパターンを記憶しました:10 = 16、20 = 32、40 = 64、80 = 128(100 = 256、80は1ビット少ないため)。 200 = 512私が覚えていたのは、以前使用していたマシンのページサイズが512だったためです(もはやどのマシンか覚えていません!)。 1000 =4096。これは別のマシンのページサイズだからです。
また、64 = 100、32 = 50、B8 = 200
これですべてです。それを超えて、私は付け加えます。
記録のために、あなたの脳は答えを見つける機能的な方法を使用しています。これが、私の脳が16進数の値を見つけるために使用する関数です。
E0hまでの20h、40hなどの10進値を記憶します。 (私はあなたがすでに100hを知っていると思います。)次に、1から16までの数値を加算または減算することにより、他の数値の10進数値を取得します。
10進数値は
20h = 0x16^0 + 2x16^1 = 0x1 + 2x16 = 0 + 32 = 32
10進表記、または(32)10
。
ために 40h
ヘキサでは64
10進数、EOH
の場合、224
10進数。
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
私はこれらのどれも役に立たなかったので、ここに私の方法があります:各文字を表すために2組の2進数に変換してから、全体の2進数表現を取り、10進数に変換します
例:AB
A/B
=バイナリの1010/1011
= 10進数で171(128 + 0 + 32 + 0 + 8 + 0 + 2 + 1)
これは、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です。