在讲进制之间的转换以前,先引入几个概念:原码、反码、补码。在计算正数的时候原码=反码=补码,因此我认为只要在计算负数时反码和补码的概念才有真正的意义。计算机中二进制的计算均是用补码计算的,咱们平时所说的二进制一般也是补码,须要注意二进制首位字符为符号位。如下是对这些概念的理解spa
原码:一个整数,转换成二进制数,称为原码;blog
如:①有一个整数,其数值为9,转换成二进制获得00001001,则其中原码为00001001;
递归
②有一个整数,其数值为-9,转换成二进制获得10001001,则其中原码为10001001;二进制
反码:将原码按位取反,获得的新的二进制数,称为反码;im
如:①正数的反码等于原码,则数值9的反码为00001001。margin
②将10001001符号位不变,其余数值按位取反,获得新的二进制数11110110,即为其反码,则数值-9的反码为11110110img
补码:反码加1,获得的二进制数,称为补码;计算机
如:①正数的补码等于原码,则数值9的补码为00001001。co
②二进制数值11110110加1,获得11110111,即为其补码,则数值-9的补码为11110110字符
1、十进制转二进制
一、数值为正数时;
用该正数,递归除2,直到商等于0中止,倒序取余数,高位不足补0;
以十进制55为例:
最终获得的二进制数为 11 0111 ,高位补0最终获得 0011 0111;
二、数值为负数时;
以十进制-55为例:
① 取得该数值的绝对值为55,原码为0011 0111,则-55的原码 = -0011 0111 = 1011 0111
② 取 1011 0111 反码获得 1100 1000
③ 取 1100 1000 补码获得 1100 1001
则-55转换成的二进制数值为 1100 1001
2、二进制转十进制
二进制数首位字符为符号位,0表示正,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
二、二进制数值首位为1
二进制首位为1则表示次二进制数值为负数,根据十进制转二进制的规则逆推便可;
以 1100 1001 为例:
① 1100 1001 减1 获得 1100 1000
② 取1100 1000 反码获得 1011 0111
③ 将1011 0111 转化成十进制为-55
则最终获得结果为 -55