计算机与程序设计中,我们常见的数制有二进制(B),八进制(O),十进制(D)和十六进制(H)。
二进制数:(以0B开头)
二进制数又称机器数,在机器的世界里,只认识0和1,二进制数就使用0和1来表示。一般来说二进制数很容易区分和判断,因为二进制数哪怕一个非常小的数都非常长,有时候我们习惯从右往左,每四位数空格分隔,这样易于辨识数的大小。
如:14用二进制来表示可以写作1110
25用二进制表示可以写作0001 1001(或11001)
转换方法如下:
如图十进制的123转成二进制就是1111011,其实转成几进制都是一个道理。一直除到为0为止。
二进制转十进制:
把每个数位单独转换后把所有的转换结果求和
计算机字节里采用二进制补码记录数字,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
所有非负数整数, 补码和原码一样
.十进制负数转二进制:“先取正数的二进制值,再取反,加1”
【例】:(-31)10 = (1)2
31的二进制数为11111,取反00000,加1得1。
二进制转八进制或16进制
1、先转换为10进制数再使用短除法转换。
2、转换八进制可以使用 421每三位一转。如刚刚的123的二进制为0B1 111 011,八进制则为1 4+2+1 2+1 =0173
3、转换16进制和8进制同理,使用8421转换。
八进制数
八进制数为每逢八位进一位,八进制数规定必须以0开头。八进制使用01234567这八位数字来表示数值。
八进制转二进制则是拆分,每个数拆分为三位的二进制数照写就OK。
八进制转十进制,权值相加就ok。如下图。
八进制转十六进制数需要使用二进制或十进制作为中间桥梁,二进制作为中间数会更加简单一些。
例如:
八进制的:1234567
转换为二进制是每个数字转换为三位二进制:001 010 011 100 101 110 111
然后把这些数字从右边开始进行按四位分组:0 0101 0011 1001 0111 0111
然后从右边每四位组依次对应一个16进制数:053977
十六进制数
十六进制数为每逢16位进一位,十六进制数规定必须以0X开头。十六进制使用0123456789ABCDEF这十六个数来表示。
16-->2:
要将十六进制数转换成二进制数,只要将1位十六进制数写成4位二进制数,然后将整数部分最左边的“0”和小数部分最右边的“0”去掉即可。
例如:3B.328H = 0011 1011.0011 0010 1000B = 111011.001100101B
16-->8:可以先写成2进制数,再转化成八进制。如上面的
3B.328H = 0011 1011.0011 0010 1000B = 00 111 011. 001 100 101 000B
=73.145O
16-->10:使用权值法,就ok。如2AF5=
例:1A6.3B8H
=110^2+A10^1+610^0+310^(-1)+B10^(-2)+810^(-3)
=116^2+1016^1+616^0+316^(-1)+1116^(-2)+816^(-3)
=419.232422
十进制数
十进制数转换任意数制都可参照二进制数的短除法,几进制就除几。类似,此处不再赘述。
进制转换完成
————杨广
原文地址:https://blog.51cto.com/14554210/2439995