如何使用大脑将十六进制转换为十进制?

时间:2009-05-26 11:52:34

标签: hex

打开计算器做这么小的事情对我来说很烦人,我坚信这句话“你知道的越多越好!”所以我在这里问你如何将十六进制转换为十进制。

直到那一刻我使用以下公式:

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

当我继续使用更高的数字(如C0或FB

)时,我感到困惑

你正在使用的公式(大脑,不起作用)是什么?

9 个答案:

答案 0 :(得分:37)

如果你认为十六进制是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

答案 1 :(得分:15)

那不是公式......那甚至不像公式......

公式为:

X * 16 ^ y其中X是您要转换的数字,y是数字的位置(从右到左)。

所以..如果你想将 DA145 转换为十进制将是..

  

(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

答案 2 :(得分:9)

当我发现我使用的十六进制数字是32位时,我几乎停止了这样做。那里没什么好玩的。

对于较小的数字,我(最终)记住了一些模式:10 = 16,20 = 32,40 = 64,80 = 128(因为100 = 256,80减少了一点)。 200 = 512我记得因为我曾经使用的一些机器,其页面大小为512(不再记得什么机器!)。 1000 = 4096因为这是另一台机器的页面大小。

也是,64 = 100,32 = 50,B8 = 200

这就是全部。除此之外,我补充说。

答案 3 :(得分:7)

为了记录,你的大脑确实使用了找到答案的功能方法。这是我的大脑用来查找十六进制数值的函数:

  1. 将十六进制数除以个别数字。
  2. 将每个数字转换为它的十进制值(0-9保持不变,A为10,B为11等)
  3. 从最右边的数字开始,将每个值乘以16 ^ X幂,其中X是距最右边数字的距离(所以最右边的数字是16 ^ 0,或者1,接下来是16 ^ 1,或者16,下一个是16 ^ 2,或256等。)
  4. 将所有值加在一起。

答案 4 :(得分:3)

记住20h,40h等十进制值,直至E0h。 (我想你已经知道了100h。) 然后通过添加或减去1到16之间的数字来获取其他数字的小数值。

答案 5 :(得分:2)

小数值为

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

以十进制表示法,或(32)10

对于hexa中的40h,我们将以小数点64EOH,我们将以十进制为224

答案 6 :(得分:1)

在确定单词中特定索引的十进制值时,对所有基数进行推广:

b^i*n

其中b是基数,i是单词中的索引,n是索引处的数值。记住这一点,记住b,i,n = bin =二进制的简称。

示例:

for base2(binary) 1 000,获取1所在的值:

b = base,即base2: b = 2

基于i = 0的单词内的索引,即1000,1表示第3个索引, i = 3

n =索引中列出的数字,即1000,第3个索引为1, n = 1

所以,2 ^ 3 * 1 = 8

for base10(十进制) 9 00,获取9所在的值:

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

表示base16(十六进制)0x0 f 0,得到f所在的值:

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

请注意,这可用于确定单词中每个索引的值,然后可以将每个值相加以确定完整的单词值。

e.g。 1001,从左到右(顺序无关紧要):

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

答案 7 :(得分:0)

我没有发现任何帮助,所以这是我的方法: 将其转换为两组二进制数字来表示每个字母,然后将整个二进制表示形式转换为十进制

示例: AB

A / B

= 1010/1011二进制

= 171(128 + 0 + 32 + 0 + 8 + 0 + 2 + 1)以十进制表示

答案 8 :(得分:0)

这是另一种不涉及16的幂且可以用铅笔和纸完成的方法:

从最左边的数字开始。将其乘以16,然后从左数第二个数字相加。 然后将结果乘以16,然后将其从左数第三个数字相加。依此类推。

例如,将0x20A5转换为十进制:

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

转换结果为8,357。