原码、反码、补码之间的转换

一. 理论知识

参照内容如下:3.数据表示

二. 具体运算

例1. 若机器字长n等于8,分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的原码表示。

解:   [ + 1 ] 原 = [+1]_原= [+1]= 0 0000001;     [ − 1 ] 原 = [-1]_原= [1]= 1 0000001;

     [ + 127 ] 原 = [+127]_原= [+127]= 0 1111111;    [ − 127 ] 原 = [-127]_原= [127]= 1 1111111;

     [ + 45 ] 原 = [+45]_原= [+45]= 0 0101101;    [ − 45 ] 原 = [-45]_原= [45]= 1 0101101;

     [ + 0.5 ] 原 = [+0.5]_原= [+0.5]= 0 ⋄ \diamond 1000000;   [ − 0.5 ] 原 = [-0.5]_原= [0.5]= 1 ⋄ \diamond 1000000;(其中, ⋄ \diamond 是小数点的位置)

说明: 最高位为符号位,0表示正号,1表示负号。该题机器字长为8,抛去符号位用剩余7位表示具体数值的二进制表示。
十进制转换为二进制采用基数乘除法:

  1. 整数部分采用除基取余法:在这里插入图片描述
十进制(45)转换为二进制
  1. 乘基取整法(小数部分的转换):
十进制(0.5)转换成二进制

例2. 若机器字长n等于8,分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的反码表示。

解:   [ + 1 ] 反 = [+1]_反= [+1]= 0 0000001;     [ − 1 ] 反 = [-1]_反= [1]= 1 1111110;

     [ + 127 ] 反 = [+127]_反= [+127]= 0 1111111;    [ − 127 ] 反 = [-127]_反= [127]= 1 0000000;

     [ + 45 ] 反 = [+45]_反= [+45]= 0 0101101;    [ − 45 ] 反 = [-45]_反= [45]= 1 010010;

     [ + 0.5 ] 反 = [+0.5]_反= [+0.5]= 0 ⋄ \diamond 1000000;   [ − 0.5 ] 反 = [-0.5]_反= [0.5]= 1 ⋄ \diamond 0111111;(其中, ⋄ \diamond 是小数点的位置)

说明: 正数的反码和原码相同,负数的反码是其原码除符号位按位求反。

例3. 若机器字长n等于8,分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的补码表示。

解:   [ + 1 ] 补 = [+1]_补= [+1]= 0 0000001;     [ − 1 ] 补 = [-1]_补= [1]= 1 1111111;

     [ + 127 ] 补 = [+127]_补= [+127]= 0 1111111;    [ − 127 ] 补 = [-127]_补= [127]= 1 0000001;

     [ + 45 ] 补 = [+45]_补= [+45]= 0 0101101;    [ − 45 ] 补 = [-45]_补= [45]= 1 010011;

     [ + 0.5 ] 补 = [+0.5]_补= [+0.5]= 0 ⋄ \diamond 1000000;   [ − 0.5 ] 补 = [-0.5]_补= [0.5]= 1 ⋄ \diamond 1000000;(其中, ⋄ \diamond 是小数点的位置)

说明: 正数的补码和原码相同,负数的补码是其反码的末位加1。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值