比如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 数据库原理及应用上机练习题
- ¥30 征集Python提取PDF文字属性的代码
- ¥15 如何联系真正的开发者而非公司
- ¥15 有偿求苍穹外卖环境配置
- ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
- ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
- ¥15 clousx6整点报时指令怎么写
- ¥30 远程帮我安装软件及库文件
- ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
- ¥20 深信服vpn-2050这台设备如何配置才能成功联网?