JAVA(初学)byte a=(byte)128; byte b=(byte)(-129); a,b得到的值分别为

a和b得值分别为-128和127.
这个是编码方式决定的,Java中正数用源码表示,负数用补码表示,第一位是符号位。

所以对于128和-129,他们的编码分别是:
0000 0000 0000 0000 0000 0000 1000 0000
1111 1111 1111 1111 1111 1111 0111 1111。

对于a来说,1000 0000是负数(第一位为1),它的绝对值是1000 0000即128,
而对于b来说,0111 1111是正数,值为127。
————————————————————————————————————
0 00000000

1 00000001

... ........

127 01111111

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

共 128 个

-1 11111111

-2 11111110

... ........

-128 10000000

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

共 128 个

我们都知道byte占8位。而2的8次方等于256,也就是byte最多可以表示256个不同的数,

0~127:128个

-0~127:128个

但是这里0与-0表示一样的数了,所以就用-0的二进制补码表示到-128里面去了
  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值