原码、反码和补码

原码:

最左边为符号位,其余为数值

对于一个字节(byte),共8位(bit),最大可以取得0 1 1 1 1 1 1 1 的数值,十进制为+127,

最小值为1 1 1 1 1 1 1 1 ,十进制为-127

使用原码进行负数计算时,实际运算的结果与预期结果相反,(对于10000000加一为10000001,表示-1.,但是十进制为0+1=1,为正一,所以结果冲突)

则引出反码

反码:

为了解决原码不能计算负数的问题而出现的

正数反码不变,负数在原来符号位不变的基础上,后面的数值位取反

-56原码 1 0 1 1 1 0 0 0,其反码 1 1 0 0 0 1 1 1 ,二进制加一 ;1 1 0 0 1 0 0 0 

-56+1 = -55 ,二进制同上

在反码中0有两种状态+0 和-0 ,分别二进制0000 0000,和1111 1111 ,若反码的负数运算跨0,则会引起错误

则引出补码

补码

正数的原码反码补码都一样,为了避免0的重复歧义  ,则负数表示反码再加一,

+0和-0都是0000 0000 

-1 为 1111 1111

-2  为1111 1110

...

比如-4 的补码 1111 1100 加5 ,

   1111 1100 (-4的补码)

+  0000 0101 (+5的原码/反码/补码)

-------------------

0000 0001   (+1的原/反/补)

引入补码后,则引出-128,其没有原码也没有反码,只有规定的补码

十进制原码反码       补码
-127       1111 11111000 0000  1000 0001
-1281000 0000

最后注意

计算机中的存储和计算都是以补码的形式进行的

java中byte 占1字节  8bit

short 占2字节   16bit 

int 占4字节   32bit

long 占8字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值