补码原码有多难?

 字节和位
位运算:对数据的二进制位进行处理的运算。
    字节byte数据存取和数值计算的基本单元。
              从内存中读取数据是以字节为单位,
              向内存中写入数据也是已字节为最小单位,
              将数值输出到文件和从文件获取数值时,最小单位也是字节。
    位:大部分操作系统中,一个字节由8个位组成。
    字长word

1 原码和补码:

假设机器字长为8
  
   ① 非负数的补码:与原码相同。

   ② 负数的补码:符号位为1,其余位为该数绝对值的原码按位取反后,再加1.
       
       8位的2进制,最高位用于表示符号,剩余7位表示数值

    例:原码 -> 补码  8位机为例
    进制数       原码         补码
       11       0000,1011     0000,1011
      -15       1000,1111     (1111,0000+1)=1111,0001

    例:补码 -> 原码
已知一个数的补码,其求原码的过程,与已知原码求补码的过程完全一样。
    进制数      码         
       11       0000,1011     0000,1011
      -15       1111,0001     (1,000,1110+1)=1000,1111

负数的补码有一个更简单的记忆方法:
符号位不变,其它的从低位开始,直到遇到第一个1之前,什么都不变,遇见第一个1之后,保留这个1,以后按位取反。例如:[-7]原=10000111B   -->    [-7]补=11111001B

扩展:补码的计算
使用补码计算时,可以将符号位和其他位统一处理。

二进制     十进制   机器数(也是原码)   机器数的真值      码          
0000,0000    0        0,000,0000          +0           0,000,0000    0,000,0000<---|              
0000,0001    1        0,000,0001           1           0,000,0001    0,000,0001    |
0000,0010    2        0,000,0010           2           0,000,0010    0,000,0010    |
0000,0011    3        0,000,0011           3           0,000,0011    0,000,0011    |
...                                                                                |
0111,1101    125      0,111,1101          125          0,111,1101    0,111,1101    |
0111,1110    126      0,111,1110          126          0,111,1110    0,111,1110    |
0111,1111    127      0,111,1111          127          0,111,1111    0,111,1111    |
                                                                                   |
                                          +0和-0的补码都为0000,0000】            |
                                                                                   |
1000,0000    128      1,000,0000         -0            1,111,1111    0,000,0000----|
1000,0001    129      1,000,0001         -1            1,111,1110    1,111,1111
1000,0010    130      1,000,0010         -2            1,111,1101    1,111,1110
1000,0011    131      1,000,0011         -3            1,111,1100    1,111,1101
...
1111,1110    253      1,111,1101         -125          1,000,0010    1,000,0011
1111,1110    254      1,111,1110         -126          1,000,0001    1,000,0010
1111,1111    255      1,111,1111         -127          1,000,0000    1,000,0001
                                        (-128)  多余补码形式的数】 1,000,0000    -128

     补码的设计目:
        ⑴使符号位能与有效值部分一起参加运算,从而简化运算规则.
        ⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计.

    例:补码的乘法运算
    十进制数     原码           补码
      -11 ---- 1000,1011 ---- 1111,0101
    × 10 ---- 0000,1010 ---- 0000,1010 ×
   --------------------------------------  
     -110                             0
       |                      11110101
       |                    11110101
       |                   --------------
       |                   100110010010
       | ---- 1110,1110 ---- 1001,0010

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值