原码、反码、补码、移码的计算转换
创作时间:
作者:
@小白创作中心
原码、反码、补码、移码的计算转换
引用
CSDN
1.
https://m.blog.csdn.net/qq_52964132/article/details/140052527
在计算机系统中,数值的表示方式直接影响到运算的效率和结果的准确性。原码、反码、补码和移码是四种常见的二进制数表示方法,它们各有特点和适用场景。本文将详细介绍这四种编码方式的转换规则,帮助读者掌握计算机中数值表示的基础知识。
正数
对于正数来说,原码、反码和补码都是一样的,不会发生变化。因此,在计算时,只要发现第一位符号位是0(表示正数),就可以直接得出三者的表示形式。
移码是在补码的基础上将符号位取反得到的。
负数
负数的处理相对复杂一些,需要根据不同的编码方式采取不同的转换规则。
原码 & 反码
- 符号位不变
- 数值位都取反
反码 -> 补码
- 末尾加1
原码 <-> 补码
- 从右向左找到第一个“1”
- “1”左边所有的数值位按位取反
原理:末位加1,各项从右依次取反,因此从右向左走第一个“1”的右面补码都已经按位取反,负负得正,只需调整左面即可。
补码的相反数
- 取反(按位取反):将补码中的每一位取反,即0变为1,1变为0。这一步操作称为“取反”或“按位取反”。
- 加1:在取反后的结果上加上1。
两个步骤结合起来,就可以将一个补码表示的数变为其相反数。
例子
假设有一个8位补码表示的数 00001001(即十进制的9),我们想要将其变为其相反数。
- 取反:
- 原数:00001001
- 取反后:11110110
- 加1:
- 取反后的数:11110110
- 加1后:11110111
因此,00001001 的相反数是 11110111,即十进制的 -9。
验证
为了验证这个结果,我们可以将 11110111 转换回十进制:
- 最高位是1,表示这是一个负数。
- 取反:00001000
- 加1:00001001
结果是9,但由于最高位是1,所以是 -9。
特殊情况:对于补码表示的最小值(例如8位补码的最小值是 10000000,即 -128),其相反数在补码系统中没有对应的正数表示,因为补码系统的正数范围比负数范围少1。在这种情况下,最小值的相反数仍然是它自己。
移码 <- Other
在补码基础上将符号位取反。
方法总结
- 首先根据符号位判断正负
- 若为正,则都不变,移码变符号位;若为负,则需要进一步的分情况讨论
- 若为原反,符号不变数值变;
- 若反补, 单向末位要加 1;
- 若原补,从右到左先找 “1”,1左取反
- 若补反,先变原码再反码
- 若有移, 先变补码再变化
练习
热门推荐
第二套人民币收藏热:如何辨别真伪?
晋北枢纽大同南站:3小时通达三省区,文旅发展添动力
健康饮食的长寿密码:从饮食金字塔到长寿老人的餐桌智慧
曹操VS刘备:汉中之战的后勤大战,谁才是真正的粮草大师?
结肠炎患者如何保持阳光心态?
《神印王座》:一部关于牺牲与救赎的奇幻史诗
冬季心血管疾病高发,加味瓜蒌薤白汤助养护
从网络用语到稀有蝴蝶:解密“雅美蝶”的多重身份
肖战:从《陈情令》到《骄阳伴我》,用坚韧精神克服外貌质疑,以过硬演技赢得观众认可
高情商人士如何表达感谢?这些场景化表达值得学
肖战杨紫恋情传闻再起,双方工作室回应关系正常
频繁做梦影响睡眠?中医现代医学这样破解
狼戈新作《苹果香》,唱响伊犁乡愁
大理必吃美食店铺:过桥米线、白族菜等7家精选推荐
香港故宫文化博物馆:融合传统美学与现代设计的维港新地标
大航海时代:葡萄牙如何征服亚洲?
国家反诈中心APP上线,来电预警助你远离诈骗陷阱
沙棘果浆:从“小众”到“网红”的健康饮品新选择
黄精:延缓衰老的秘密武器
不刷题的吴姥姥:用影视片段点燃物理学习热情
丹东出发至云南古城五日深度游行程推荐
基督教祷告:抑郁症患者的心灵灯塔
CAR-NK细胞疗法新突破:FT596治疗淋巴瘤完全缓解率达85%
2025年社保改革:五险全覆盖,信息化破解转移难题
九成帕金森患者早期嗅觉减退,这些症状别大意
高速微弹轰击技术助力甜玉米遗传改良
光绪帝与慈禧太后:33年宫廷权斗与改革梦碎
一黑一红,各展风采:松烟墨与朱砂墨的书法应用对比
2024武夷山超级探秘周:徒步自驾骑行,线上线下千万人共探秘
正确使用手机飞行模式:从航空安全到生活便利