1、进制的转换
数据的表示方法有二进制、八进制、十进制、十六进制等。总之,比如是R进制,意思就是逢R进1。可以用的数为R个,分别是0,1,2,……,R-1。
那我如何知道一个数18,是几进制的18呢,为了把不同进制的数分开表示,避免混淆,通常采用下标的方式来表示一个数的进制,如十进制18表示(18)10,八进制(18)8,如果是十六进制数,则通常在数字的后面加大写字母H,如ABH表示十六进制数AB。
如何转十进制数,对于任意一个R进制数,它的每一位数值等于该位的数码乘以该位的权数,权数由一个幂R的k次方表示,即幂的底数是R,指数为k,k是该位和小数点之间数码的个数;当该位位于小数点右边时,k为负值,其绝对值是该位和小数点之间数码个数加一。
如何从十进制转二进制,可以采用短除法,以前背过一句话除二取余,倒叙排列。意思就是把十进制数每次都除以二,然后留下余数,最后把余数倒着排列就是二进制数。
二进制转八进制数,将每三位二进制数转换为八进制数即可,最后不足三位的,则在最高位上补零。转十六进制数则是4位转十六进制数即可。
2、原码、反码、补码和移码
1.原码
一个数在计算机中的二进制表示形式,也称为机器数,第一位表示符号,正数为0,负数为1,其余为表示值,也是真值的绝对值。原码的缺点是原码直接参与运算可能会导致错误的结果。比如十进制1+(-1)=0,但是使用原码,则(00000001)+(1000001)=10000010,这样的结果是-2。原码在零位置上有00000000和11111111两个编码。
2.反码
通常是用来原码求补码或补码求原码的过渡码。正数的原码与反码相同,负数的反码符号位为1,其余各位为该数绝对值的原码按位取反得到的值。在0这个数上有00000000和11111111两个编码。
3.补码
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法可以统一处理。补码可以唯一表示一个数值,解决了0可以用两个编码的问题。
正数的补码与原码相同,负数的补码是该数的反码加一,这个加一就是"补"。用了一个取模的思想,比如钟表上指针在8,我要减去2,可以逆时针转2,也可以顺时针转10,12-2=10个,也到原来的位置。比如一个四位二进制,首位符号位1,取反就是加上模减1,加一的原因出来了,取反码的时候减一了,这时候加一。