16进制即逢16进1,其中用A,B,C,D,E,F(字母不区分大小写)这六个字母来分别表示10,11,12,13,14,15。故而有16进制每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F16个大小不同的数。
16进制到十进制
16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
例:2AF5换算成10进制:
用竖式计算:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2= 2560
第3位: 2 * 16^3 = 8192 +
-------------------------------------
10997
直接计算就是:
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
16进制到二进制
由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制的15,即16进制每一位上最大值,所以,我们可以得出简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换,即得所求:
例:2AF5换算成2进制:
第0位: (5)16 = (0101) 2
第1位: (F)16 = (1111) 2
第2位: (A) 16 = (1010) 2
第3位: (2) 16 = (0010) 2 -------------------------------------
得:(2AF5)16=(0010101011110101)2
从二进制转换成十六进制的简便方法例举
16进制就有16个数,0~15,用二进制表示15的方法就是1111,从而可以推断出,16进制用2进制可以表现成0000~1111,顾名思义,也就是每四个为一位。举例:
0111101可以这样分:
0011|1101(最高位不够可用零代替),对照着二进制的表格,1024 512 256 128 64 32 16 8 4 2 1 (一般例举这么多就够了,如果有小数的话就继续往右边列举,如0.5 0.25 0.125 0.0625……)
1024 512 256 128 64 32 16 8 4 2 1
0 0 1 1
| 1 1 0 1
左半边=2+1=3 右半边=8+4+1=13=D
结果,0111101就可以换算成16进制的3D。
关于10进制转化成16进制的算法
可以先将10进制转换为2进制。举个例子。2591转化为2进制为:101000011111.然后转化为16进制。
此时注意,有技巧的。十六进制中,0的二进制为0000,15(也就是十六进制中的F)的2进制刚好为1111。所以,用思维2进制表示一个十六进制。1010,0001,1111。刚好为A1F。
另外如果二进制的位数不为4的倍数,从低位开始4位4位的算,最高位不足的时候补0就行了。例如:543,转化为2进制为1000011111.位数不足,补位0010,0001,1111.转化为16进制为21F.
76521转换成16进制应该是12AE9
用76521 /16 得4782 余数是9 1位就是9
4782/16 得298 余数是14 2位就是E
298/16 得18 余数是10 3位就是A
18/16 得1 余数是2 4位就是2
1/16 得0 余数是1 5位就是1
结果就是12AE9
16进制 10.11.12.13.14.15 分别用字母表示 A.B.C.D.E.F
表格:
四位一并,也就是把 四位二进制数 转成十进制就是十六进制了。
如:0010转成十六进制就是0*2^3 0*2^2 1*2^1 0*2^0=2
如:01000010转成十六进制就是42(前面四位0100就是4,后面四位0010就是2)
十进制 二进制 十六进制
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
一个数若没有前导符和后缀符的规定,人和计算机都是不能完全正确识别是什么进制的数的。所以C/C++才规定:十进制数不用前导符,前面也不能有0,即不能把30写成030;八进制数前面必须加前导符0,所以如果把30写成030,那就成了十进制数24了;而十六进制数前必须加0x前导符,如0x30表示的是十六进制数,是十进制数48,要不写0x这数就只有30了。什么约定都不给,只写345,那只有断定不是二进制、不是三进制、也不是四进制和五进制,其他就无法判定了……