汇编-负数表示法
负数的二进制表示方法
1、正数5的表示法
假设有一个int类型的数, 值为5, 那么, 我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101, 不过int类型的数占用4字节(32位) , 所以前面填了一堆0。
2、负数-5的表示法
现在想知道,-5在计算机中如何表示?在计算机中,负数以原码的补码形式表达。
原码:
一个正数,按照绝对值大小转换成的二进制数;一个负数按照绝对值大小转换成的二进制数,然后最高位补1,称为原码。
比如:
00000000 00000000 00000000 00000101是5的原码。
10000000 00000000 00000000 00000101是-5的原码。
反码:
正数的反码与原码相同,负数的反码是对该数的原码除符号位外各位取反。
比如:
正数00000000 00000000 00000000 00000101的反码还是 00000000 00000000 00000000 00000101
负数10000000 00000000 00000000 00000101的反码则是 11111111 11111111 11111111 11111010
补码:
正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
比如:10000000 00000000 00000000 00000101的补码是:
11111111 11111111 11111111 11111011
所以,-5在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。
可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFFFF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2020-08-10 C++类型转换