比如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
也是学生一枚,如果有什么不好的地方请批判指正谢谢
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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 服务安装失败