在讲进制之间的转换之前,先引入几个概念:原码、反码、补码。在计算正数的时候原码=反码=补码,所以我认为只要在计算负数时反码和补码的概念才有真正的意义。计算机中二进制的计算均是用补码计算的,我们平时所说的二进制通常也是补码,需要注意二进制首位字符为符号位。以下是对这些概念的理解
原码:一个整数,转换成二进制数,称为原码;
如:①有一个整数,其数值为9,转换成二进制得到00001001,则其中原码为00001001;
②有一个整数,其数值为-9,转换成二进制得到10001001,则其中原码为10001001;
反码:将原码按位取反,得到的新的二进制数,称为反码;
如:①正数的反码等于原码,则数值9的反码为00001001。
②将10001001符号位不变,其他数值按位取反,得到新的二进制数11110110,即为其反码,则数值-9的反码为11110110
补码:反码加1,得到的二进制数,称为补码;
如:①正数的补码等于原码,则数值9的补码为00001001。
②二进制数值11110110加1,得到11110111,即为其补码,则数值-9的补码为11110110
一、十进制转二进制
1、数值为正数时;
用该正数,递归除2,直到商等于0停止,倒序取余数,高位不足补0;
以十进制55为例:
最终得到的二进制数为 11 0111 ,高位补0最终得到 0011 0111;
2、数值为负数时;
以十进制-55为例:
① 取得该数值的绝对值为55,原码为0011 0111,则-55的原码 = -0011 0111 = 1011 0111
② 取 1011 0111 反码得到 1100 1000
③ 取 1100 1000 补码得到 1100 1001
则-55转换成的二进制数值为 1100 1001
二、二进制转十进制
二进制数首位字符为符号位,0表示正,1表示负
1、二进制数值首位为0
二进制数值位数从后往前,依次计算第n位上数字乘以2的n-1次幂,所得到的和即为十进制数字;
以 0011 0111 为例:
1*2^0 + 1*2^1 + 1*2^2 + 0*2^3 + 1*2^4 + 1*2^5 = 1 + 2 + 4 + 16 + 32 = 55
则最终的结果是55
2、二进制数值首位为1
二进制首位为1则表示次二进制数值为负数,根据十进制转二进制的规则逆推即可;
以 1100 1001 为例:
① 1100 1001 减1 得到 1100 1000
② 取1100 1000 反码得到 1011 0111
③ 将1011 0111 转化成十进制为-55
则最终得到结果为 -55