其实在生活中,我们经常听闻2进制、8进制、10进制、16进制..这些都是数值的不同表示形式。
eg.
15的2进制:1111
15的8进制:17
15的10进制:15
15的16进制:F
*N进制数字由0-(N-1)的数组成【十六进制中10=a,11=b,12=c,13=d,14=e,15=f】
*N进制数字满N进一
一、N进制转十进制
在这里我们可以将N进制中的N理解为每个数的权重。如下图所示:
也就是1*8^1+7*8^0=15
二、M进制转N进制
1.10进制转2进制
对十进制的数一直除以二每次都有数值为0/1的余数,直到最后一步,将所有余数从下到上输出即为二进制数字。
2.2进制转8进制
【8进制数字】:由0~7组成,表示为(0+十进制数字)=8进制数字 ps.是零不是O
通过上面的讲解,大家一定记得,八进制数字是由0~7组成的,而0~7的二进制分别表示为
0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111
我们发现这组数至多需要三个二进制位就可以组成。如下图所示:
我们将2进制的数字从右到左每三个为一组进行转换,不足三个的直接转换,便可以得到八进制数。
【转换方式】以前文中提及2进制转10进制的方法进行转换;
3.2进制转16进制
【16进制数字】:0~9 a b c d e f 组成;表示为(0x+十进制数字)=8进制数字 ps.是零不是O
同上,而0~f 的二进制表示中至多需要四个二进制位组成
如下图所示:
我们将2进制的数字从右到左每四个为一组进行转换,不足四个的直接转换,便可以得到十六进制数。
【转换方式】以前文中提及2进制转10进制的方法进行转换;
4.2进制的回归
将N进制转化为2进制时,将每一个数变为相应的二进制,如八进制是将每个数变为三个二进制组成的数再组合,十六进制是将每个数变为四个二进制组成的数再组合~
三、原码、反码、补码
原码、补码、反码都是整数的二进制的表示方法。
如果是有符号的整数,三种表示方法均有符号位和数值位两部分,在2进制序列中,最高一位为符号位,其余都是数值位。
符号位:0表示“正”;1表示“负”
对于正整数来说,三种表示方法均相同;对于负整数来说三种表示方法各不相同;
下面就负整数来说:
1.原码
直接将数值按照正负数形式翻译为二进制得到的就是原码;
2.反码
将原码符号位不变,其他位依次取反就可以得到反码;
3.补码
(1)反码+1得到补码;例如上图:
补码得原码:取反+1
(2)补码相关补充
对于整形来说,数据存放内存中其实存放的是补码。
为什么呢?
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器),此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。