原码、反码与补码,怎么计算?

原码、反码、补码的定义是什么?

计算机用0和1来表示一个整数,而整数有正负之分。

原码:  最高位为符号位,正数为0,负数为1.非符号位为二进制的绝对值表示。

反码:正数反码与原码一致,负数反码就是原码按位取反,除去符号位不变,保持为1。

补码, 正数补码与原码一致,负数补码是反码+1,即补码=反码+1. 也可以计算为:以原码进行操作,符号位不变,保持为1,其余位取反,直到碰到最后一个1为止,那个1及以后的数字不再取反。又:原码的第一个1和最后一个1之间的数字,全部取反。

举例说明:16位机,十进制,+6,-4,三码分别如何用hex表示?

 原码反码补码
60X00060X00060X0006
-60X80060XFFF90xFFFA
40X00040X00040X0004
-40x80040XFFFB0XFFFC

正数三码一致。jsj数字运算均基于补码。

负数补码为其模减去该数的绝对值。

举例,对于16位机,0XFFFC是多少?可能是有符号的 -4,也可能就是无符号的65532 !

65532+4=65536=2^16

来个更简易负数补码计算方法:

abs(-m) < 2^n,补码表示为: 2^n-m,前头根据字长自行补足F,n =[4,8,12,16...32],步长=4

NumberABS字长
8163264
-990xF70XFFF70XFFFFFFF7自加F
-180X120XEE0XFFEE0XFFFFFFEE

自加F

-6500X28A 0XFD760XFFFFFD76自加F
--731420X11DB6  0XFFFEE24A自加F

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值