机器码中的原码,反码,补码计算规则

本文深入解析机器码中正负数的原码、反码及补码表示方法,详细阐述了不同机器码之间的转换规则,以及如何通过补码进行计算,为理解计算机内部数值表示提供了清晰的指导。

在机器码中,通常在最左边添加一个不参与运算的符号位,用0表示正号“+”,1表示负号“-”


“◇”表示小数点位置,不占位

小数二进制的转换是小数部分每次乘以2然后取结果的整数部分,如0.5*1 = 1.0,就取1,后面没有了就不用再计算,但这里因为机器字长n为8,所以再补上6个0

设机器字长n为8,首位为符号位,不参与运算

各类机器码参考如下举例

原码

[+1]原=00000001[+1]_原 = 00000001[+1]=00000001
[−1]原=10000001[-1]_原 = 10000001[1]=10000001

[+127]原=01111111[+127]_原 = 01111111[+127]=01111111
[−127]原=11111111[-127]_原 = 11111111[127]=11111111

[+45]原=00101101[+45]_原 = 00101101[+45]=00101101
[−45]原=10101101[-45]_原 = 10101101[45]=10101101

[+0.5]原=0◇1000000[+0.5]_原 = 0◇1000000[+0.5]=01000000
[−0.5]原=1◇1000000[-0.5]_原 = 1◇1000000[0.5]=11000000


反码

正数的反码与原码相同

负数的反码是除了符号位,其余位按位取反(简单来说就是除了左边第一位,其余位的1变成0,0变成1)

[+1]反=00000001[+1]_反 = 00000001[+1]=00000001
[−1]反=11111110[-1]_反 = 11111110[1]=11111110

[+127]反=01111111[+127]_反 = 01111111[+127]=01111111
[−127]反=10000000[-127]_反 = 10000000[127]=10000000

[+45]反=00101101[+45]_反 = 00101101[+45]=00101101
[−45]反=11010010[-45]_反 = 11010010[45]=11010010

[+0.5]反=0◇1000000[+0.5]_反 = 0◇1000000[+0.5]=01000000
[−0.5]反=1◇0111111[-0.5]_反 = 1◇0111111[0.5]=10111111


补码

(注:考虑到计算的方便性,计算机系统中,数值一律用补码表示)
正数的补码与其原码和反码相同

负数的补码等于其反码末尾加1(1+1=0并且向前进一位,也就是前面的一位也要+1;1+0=1;0+0=0)
[+1]补=00000001[+1]_补 = 00000001[+1]=00000001
[−1]补=11111111[-1]_补 = 11111111[1]=11111111

[+127]补=01111111[+127]_补 = 01111111[+127]=01111111
[−127]补=10000001[-127]_补 = 10000001[127]=10000001

[+45]补=00101101[+45]_补 = 00101101[+45]=00101101
[−45]补=11010011[-45]_补 = 11010011[45]=11010011

[+0.5]补=0◇1000000[+0.5]_补 = 0◇1000000[+0.5]=01000000
[−0.5]补=1◇1000000[-0.5]_补 = 1◇1000000[0.5]=11000000

总结:在计算机器码时,首先判断符号是正还是负,然后写出其原码,正数的反码、补码和原码都是一样的,所以只需要记住负数的反码和补码计算方式即可

记忆:先反再补,负数反码按位取反、负数补码为反码末尾+1(符号位始终不变)

如有错误,欢迎评论留言指正

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值