二进制的原码,反码,补码,移码

在计算机中,负数以其正值的补码形式表达。
反码表示法规定:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
补码表示法规定:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
https://www.cnblogs.com/liaosc/p/10029988.html

真值:

比如: 17,-17, 0, 0.625,-0.625

原码:

即真值的二进制表达方法,但是有符号位(最高位)和数值位的区分
比如:
- (17)原: (00010001)
- (-17)原: (10010001)

反码:

规定: 正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
比如:
- (17)反: (00010001)
- (-17)反: (11101110)
意义: 反码没有任何意义,只是为了计算补码
注意规律: (17)反 和 (-17)反 完全相反,包括符号位

补码:

规定: 正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
比如:
- (17)补: (00010001)
- (-17)补: (11101111)
意义: 在计算机中,负数以其正值的补码形式表达。
注意规律: (17)补 和 (-17)补 相加: 二进制(1 0000 0000),超出8位表达,在硬件中就可以表示为(0000 0000)即为0
目的: 使用补码作为负数的表达形式,是为了两者相加即为;也是为了在做减法(-)操作时,可以转换为加法(+)

移码:

规定: 把补码的符号位取,无论正数还是负数。
比如:
- (17)移: (10010001)
- (-17)移: (01101111)
意义: 移码的意义是方便比较大小,正数的符号位是1,负数的符号位是0,这样就可以不区分符号位,直接比较大小
注意规律: 数值位本就可以通过二进制比较大小,符号位修改后,也可用于比较

posted @   南歌子  阅读(2111)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示