比如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,那么的话就会浪费一个表示数值
那么就引进补码的概念
同样正数不变,负数补码是反码+1100(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
也是学生一枚,如果有什么不好的地方请批判指正谢谢
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Python语言实验
- ¥15 SAP HANA SQL 增加合计行
- ¥20 用C#语言解决一个英文打字练习器,有偿
- ¥15 srs-sip外部服务 webrtc支持H265格式
- ¥15 在使用abaqus软件中,继承到assembly里的surfaces怎么使用python批量调动
- ¥15 大一C语言期末考试,求帮助🙏🙏
- ¥15 ch340驱动未分配COM
- ¥15 Converting circular structure to JSON
- ¥30 Hyper-v虚拟机相关问题,求解答。
- ¥15 TSM320F2808PZA芯片 Bootloader