狼道483 2022-05-01 23:10 采纳率: 75%
浏览 38
已结题

刚学c,原码反码补码

比如128 到-128
1000 0000原
1111 1111 反
1000 0000补
原码反码补码都有什么作用?

  • 写回答

2条回答 默认 最新

  • 是少泽 2022-05-02 01:20
    关注

    一、原码、反码、补码 都是什么意思

    注意:如果源码是正数,原码,反码,补码,都是他本身
    (下方是为了方便理解才这样写的)
    

    原码:将一个任意进制数转换为二进制数,就是原码

    比如:  10(10)->1010(2) 
    其中1010就是源码
    

    反码:就是原码各位取反

    比如:1010(2)各位取反变成 0101(2)就是反码
    

    补码:就是反码+1

    比如上面的0101(2)+1=0110(2) ,得到的0110就是补码
    

    你现在已经了解了原,反,补码的概念
    接下来我们了解原,反,补码怎么运行的

    用1个字节(8比特)表示
    两个十进制数 15 和 -15
    

    源码

     100(10)=00001111(2)
    -100(10)=10001111(2)
    

    其中最高位是符号位

    这时候数8位bit的表示范围是

    11111111~011111111
    就是-127~+127
    最高位是符号位,1表示负,表示正
    

    反码

    借用上面的数据
     100(10)=00001111(2)
    -100(10)=10001111(2)
    

    取反之后

     100(10)=00001111(2)->00001111
    正数不变
    -100(10)=10001111(2)->11110000
    负数除符号位各位取反
    

    这时候数8位bit的表示范围是

    01111111~111111111
    就是+127~-127
    最高位是符号位,1表示负,表示正
    

    我们发现

    10000000(2)和00000000(2)
    都表示0,那么的话就会浪费一个表示数值
    

    那么就引进补码的概念
    同样正数不变,负数补码是反码+1

    100(10)=00001111(2)->00001111->00001111
    正数不变
    -100(10)=10001111(2)->11110000->11110001
    负数的补码是反码+1
    

    这时候数8位bit的表示范围是

    01111111~10000000
    就是+127~-128
    其中10000000(2)也就是原来的-0把它表示为-128
    

    引入补码的还有一个原因
    它可以将减法转换为加法
    比如

    14->补码->00001110
    -15->补码->11110001
    

    相加

    14+(-15)=00001110+11110001
    

    按位相加

    00001110
    11110001
    -------------------
    11111111
    

    就得到-1

    验证一下:

    十进制数:-1
    原码->10000001
    反->11111110->
    补->11111111
    

    也是学生一枚,如果有什么不好的地方请批判指正谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月10日
  • 已采纳回答 5月2日
  • 赞助了问题酬金10元 5月1日
  • 创建了问题 5月1日

悬赏问题

  • ¥15 您好 这个API接口该怎么弄 网站搭建好了 API也有 现在就不知道该怎么填写API 不知道怎么用
  • ¥88 用uniapp写一个多端的程序,用到高德地图,用高德的JSAPI吗?
  • ¥20 关于#c++#的问题:水果店管理系统
  • ¥30 dbLinq最新版linq sqlite
  • ¥20 对D盘进行分盘之前没有将visual studio2022卸载掉,现在该如何下载回来
  • ¥15 完成虚拟机环境配置,还有安装kettle
  • ¥15 2024年全国大学生数据分析大赛A题:直播带货与电商产品的大数据分析 问题5. 请设计一份优惠券的投放策略,需要考虑优惠券的数量、优惠券的金额、投放时间段和投放商品种类等因素。求具体的python代码
  • ¥15 有人会搭建生鲜配送自营+平台的管理系统吗
  • ¥15 用matlab写代码
  • ¥30 motoradmin系统的多对多配置