数据表示:原码、反码、补码和移码与定点数和浮点数
1.数据表示:原码、反码、补码和移码与定点数和浮点数
前置知识
各种数值在计算机中以二进制计数制,称为机器数。机器数有无符号数和带符号数之分,无符号数无符号位,代表正数。带符号数的最高位表示正负,其余位表示数值。带符号的机器数具有原码、反码、补码和移码等不同的编码方式。
原码、反码、补码和移码
对于纯整数,各编码方式数值如下:
原码数值 | 正负数 | 反码数值 | 补码数值 | 移码数值 |
---|---|---|---|---|
可以看出,对于正整数,其原码、反码和补码是相同的。
而对于负整数,我们需要从数值的绝对值(假设值为X
)来入手计算。其原码可看作是X
的最高位的0
换成了1
(0
表示正数,1
表示负数),反码可看作是X
的按位取反,补码可看作是X
的按位取反的末位加1
(也即其反码的末位加1
)
移码较为特殊,在偏移量为的情况下,数值的移码可看作是将其补码的符号位取反获得。
事实上,对于纯小数,以上规律仍然成立。
特别地:0的原码和反码形式有0 0000000
和1 1111111
两种,而其补码只有0 0000000([+0]补)
或00000000([-0]补)
一种。
例题训练
[+45]原 = 0 0101101
[-45]原 = 1 0101101
[+45]反 = 0 0101101
[-45]反 = 1 1010010
[+45]补 = 0 0101101
[-45]补 = 1 1010011
[+45]移 = 1 0101101
[-45]移 = 0 1010011
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通