您现在的位置是:首页>生活 > 正文

负数的二进制转换(二进制中怎样识别负数)

发布时间:2023-10-20 15:58:41   来源:    

负数的二进制转换?

计算机中的整数是用补码存储的,最高位为符号位,C语言也遵从同样的规则。

如果最高位为0则为正数,求值的时候,直接转为10进制即可。

最高位如果为1代表为负数,求值的时候,需要先把二进制的值按位取反,然后加1得到负数绝对值(相反数)的二进制码,然后转为10进制,加上负号即可。

以char型为例,char占一个字节,即8位。

对于二进制值B10110011转换十进制过程为:

先取反,即1变0,0变1,得到:

B01001100再加1:

B01001101转为十进制,即按照每位的权值乘上对应位的值,结果相加即可。

十进制值=0*2^7+1*2^6+0*2^5+0*2^4+1*2^3+1*2^2+0*2^1+1*2^0=0+64+0+0+8+4+0+1=77加上符号,最终的十进制值就是-77。

即B10110011表示的十进制值为-77。

二进制中怎样识别负数?

在二进制数里,最高位0表示正数,1表示负数。

为了便于加减计算,正负数用补码来表示,正数的补码就是原码;负数的补码是原码的反码再加1。

如八位二进制数,它的表示数的范围是:

-128到+127。

+18

--------

00010010

-18

--------

反码为:

11101101

补码为:

11101110

十进制负数转换成二进制、八进制、十六进制?

十进制整数转换为二进制数的方法:

除2取余把十进制数15转化成二进制数15/2=7余17/2=3余13/2=1余11/2=0余1结果:

1111二进制转换为八进制的方法:

将二进制数从右到左,三位一组,高位不够补0例:

二进制数1110111011转换为八进制数:

001110111011(最前面补了两个0)结果为:

1673二进制转换为十六进制的方法:

二进制数转换为十六进制数的方法也类似,从右到左,四位一组,最高位不够补0如上题:

001110111011(最前面补了两个0)结果为:

3BB所以:

—617=-1001101001(二进制)=-269(十六进制)=-1151(八进制)—111=-1101111(二进制)=-6F(十六进制)=-157(八进制)—28654=-110111111101110(二进制)=-6FEE(十六进制)=-67756(八进制)

如果要在计算机中存储这些数,就要用原码或补码的形式,这时负号“-”用“1”表示。

—111的原码表示为:

11101111,—111的补码表示为:

10010001,这是8位二进制数,如果用十六位二进制数表示补码,是:

1111111110010001,再转换成八进制,就是:

177621,最前面那个“1”补两个“0”就是“001”,是八进制的“1”。