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

bytea=(byte)128;byteb=(byte)(-129);a,b得到的值分别为多少?为什么,请详细地解释一下... byte a=(byte)128;
byte b=(byte)(-129);
a,b得到的值分别为多少?为什么,请详细地解释一下
展开
 我来答
lovefish2022
2015-01-16 · TA获得超过164个赞
知道答主
回答量:67
采纳率:0%
帮助的人:43.4万
展开全部
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里面去了
zhxiufan
2015-12-09 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
byte a=(byte)128;
因为整型数128十六进制为0080H,强制转换后,高八位去掉结果将变为:80H,所以为-128
byte b=(byte)(-129);
因为整型数-129十六进制为FF7FH,强制转换后,高八位去掉,结果为:7FH,所以为127
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式