有符号二进制数--补码

1.计算机内,有符号数的3种表示方法:原码,反码,补码。

 

1)最高位为符号位,“0”为正,“1”为负,其余位为数值大小。

 

2)反码:正数    反码  = 原码;

                        负数    反码  = {符号位不变}{数值位按位取反}

 

下面重点说一下补码!

 

2.整数的补码:

 

1)正数的补码 = 原码;

 

2)负数的补码 = {原码符号位不变} {数值位按位取反+1}

 

             or = {原码符号位不变} {数值位从右边数第一个1及其右边的0保持不变,左边按位取反}

 

3)举例:以十进制数+99-99为例:(符号位0为正数,1为负数)

 

           +99 原码 = 0110_0011 b

           +99 补码 = 0110_0011 b

 

            -99 原码 = 1110_0011 b

            -99 补码 = 1001_1101 b

 

注意:(a0的补码只有一个:

                      

                      +0 原码 = 0000_0000 b,-0 原码 = 1000_0000 b

                      +0 反码 = 0000_0000 b,-0 反码 = 1111_1111 b

                      +0 补码 = 0000_0000 b,-0 补码 = 0000_0000 b  -- 相同,均为0000_0000 b

         

               b8位二进制数的表示范围:

                            

                         8位原码:            -127 d -- +127 d

                     1111_1111 b --  0111_1111 b 

  

                         8位反码:            -127 d -- +127 d

                     1000_0000 b --  0111_1111 b

 

                         8位补码:            -128 d -- +127 d

                     1000_0000 b --  0111_1111 b

 

  

 

3.纯小数的原码:小数点前一位为符号位,若为正,则后面数值位不变;

                                                                                  若为负,则后面数值位取反加1

                                

     例子:0.9239 d 原码 = 0.1110_1100_1000_0100

                                   补码 = 0.1110_1100_1000_0100

 

                 -0.9239 d 原码 = 1.1110_1100_1000_0100

                                   补码 = 1.0001_0011_0111_1100

 

4.一般在硬件语言中使用二进制补码时,是不可能带有小数点的,而且一个数通常有正数和小数两部分,这种情况下最好的方法是先将该数转换为正数,再进行转换会。

 

例子:    -87.36    原码 = 1101_0111 . 0101_1100_0010_1000

 

求其补码,计算过程如下:

 

先用 -87.36 * 2^16 = -5725224 d = 1101_0111_0101_1100_0010_1000 b

此时再取反加1,则补码 =  1010_1000_1010_0011_1101_1000 b,

最后再除2^16,恢复小数点的位置即可。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值