我想学好十六进制。有人想简单说一下吗?我想学习编程必须走的路。这种语言熟悉十进制。因为我自学的。
16中的20表示为10,即:2×16?+0×16?=32
10中的32表示为16,即:20。
十进制数的整数部分除以16,小数部分四舍五入为16,就可以转换成十六进制数。
比如十进制的0.1转换成八进制的0.0631463146314631。就是0.1乘以8=0.8,小于1不四舍五入,0.8乘以8=6.4,取整数6,0.4乘以8=3.2,取整数3,依次计算。
在编程中,我们通常使用10基数。毕竟C/C++是一门高级语言。
例如:
int a = 100,b = 99
但由于数据是在计算机中表示的,最终以二进制的形式存在,所以有时候用二进制可以更直观地解决问题。但是二进制数太长了。例如,int类型占用4个字节和32位。例如,用int类型的二进制数表示的100将是:
0000
0000
0000
0000
0110
0100
没有人会喜欢在这么长的数字上思考或操作。因此,C,C++
没有办法直接用代码写二进制数。使用16十六进制或八进制可以解决这个问题。因为,十进制越大,数字的表达长度就越短。但是,为什么是16还是八进制,而
没别的,比如9或者20?2、8和16分别是1、3和4的2次方。这使得在三个系统之间直接转换成为可能。八进制或16十进制缩短
引入了二进制数,但保持了二进制数的表达特征。你可以在下面关于二进制转换的课程中找到。
十六进制到十进制的十进制转换
16的基数是每16到1,但我们只有从0到9的十个数,所以我们用字母A、B、C、D、E、F分别代表10、11和18。字母不区分大小写。
十六进制数第0位的权重是16的0次方,第1位的权重是16的1,第二位的权重是16的2次方...
因此,在第n个位置(其中n从0开始),如果是一个数β (β大于等于0,β小于等于15,即f),则大小表示为β×16的n次方。
假设有一个十六进制数2AF5。
直接计算是:
5×160+f×161+a×162+2×163 = 10997[1]
也可以垂直表达:
0: 5×160=5
位1: f× 16 1 = 240。
第2名:A×162=2560。
第3名:2×163=8192。
-
10997
从这里可以看出,将所有碱基转换成10碱基的关键在于它们的权重不同。
假设有人问你,为什么十进制数是1234 1234?你可以给他这样一个公式:
1234 = 1×103+2×102+3×101+4×100
十六进制转换
首先我们来看一个二进制数:1111。这是什么?
你可能要这么算:1×20+1×21+1×22+1×23 = 1×1×2+65438。
但是,由于1111只有4位数字,我们必须直接记住每一位数字的权重,从高到低依次记录:8,4,2,1。即最高有效位的权重是23=8,其次是22=4,21=2,20=1。
记住8421,对于任何一个4位二进制数,我们都可以快速计算出它对应的10二进制值。
下面列出了四位二进制数xxxx的所有可能值(中间部分跳过)。
只有4位十进制值的二进制数的快速计算方法
1111 = 8+4+2+1 = 15 = F
1110 = 8+4+2+0 = 14 = E
1101 = 8+4+0+1 = 13 = D
1100 = 8+4+0+0 = 12 = C
1011 = 8+0+2+1 = 11 = B
1010 = 8+0+2+0 = 10 = A
1001 = 8 + 0 + 0 + 1 =9 =9
……
0001 = 0 + 0 + 0 + 1 = 1= 1
0000 = 0 + 0 + 0 + 0 = 0= 0
二进制数转换成十六进制,即以4位为单位转换成十六进制。
如(上面一行是二进制数,下面一行是对应的十六进制数):
1111 1101 , 1010 0101 , 1001 1011
联邦开发署,A 5,9 B
反过来,当我们看到FD时,如何快速转换成二进制数?
首先转换f:
当我们看到F的时候,我们需要知道它是15(可能你对A ~ F这五个数不熟悉),然后15怎么才能用8421取整呢?应该是8+4+2+1,所以四位数都是1:1111。
然后转换d
看到D就知道是13,13。8421怎么加?应该是:8+4+1,即:1101。
所以FD转换成二进制数,就是:1111111。
因为十六进制转换成二进制是相当直接的,所以当我们需要将一个十进制数转换成二进制数时,也可以先转换成16,然后再转换成二进制。
比如十进制数1234转换成二进制数,如果想一直除以2直接得到二进制数,就需要多次计算。所以我们可以除以16得到16:
股息计算过程商余数
1234 1234/16 77 2
77 77/16 4 13 (D)
4 4/16 0 4
结果16十六进制为:4D2。
那么我们可以直接写出4D2的二进制形式:
0100
1101
0010
其中,映射关系为:
0100 - 4
1101 - D
0010 - 2
同样,如果一个二进制数很长,我们需要把它转换成10,我们也可以把这个二进制数转换成16,然后再转换成10。
下面是一个int类型的二进制数的示例:
01101101
11100101
10101111
00011011
我们把它转换成四位一组的16:6 D5 af 1B。
十进制到十六进制
用余数定理分解,比如把487710转换成十六进制:
487710÷16=30481....14(东)
30481÷16=1905....1
1905÷16=119....1
119÷16=7....七
7÷16=0....七
这使得它为487710(10)= 7711e(16)。