狼道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日

悬赏问题

  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败