A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 云雀 中级黑马   /  2015-7-8 08:00  /  750 人查看  /  18 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能帮我解释一下:byte b=(byte)130;
的结果

评分

参与人数 1黑马币 +2 收起 理由
guoningyan + 2 很给力!

查看全部评分

18 个回复

倒序浏览
byte是两个字节的 是16bit   130的补码为
补码:00000000 00000000 00000000 10000001
反码:00000000 00000000 00000000 10000000
原码:00000000 00000000 00000000 01111111

而01111111的值是-126  答案是-126

评分

参与人数 1黑马币 +10 收起 理由
萤ě火┄星つ + 10 很给力!

查看全部评分

回复 使用道具 举报
前面写错了。看这个啊~~~
byte是一个字节的 是8bit   130的补码为
补码: 10000010
反码: 1   0000001
原码: 1   1111110

而01111111的值是-126  答案是-126
回复 使用道具 举报
而 1111110的值是-126  答案是-126
回复 使用道具 举报
int型  130在内存中 最后一个字节 的存储为(前三个字节全为0)  1000 0010
强制转换为byte是截取最后一个字节  所以   b在内存中的存储为    1000 0010(补码)
byte是有符号型整数,在内存中以补码形式存储,其原码为           1111 1110   (-126)
回复 使用道具 举报
学习!反码补码是弱项
回复 使用道具 举报
(int类型)0000 0000 1000 0010变成 (byte类型)1000 0010 反码 1111 1101 补码 1111 1110 即 -126
回复 使用道具 举报
我是来学习的:lol
回复 使用道具 举报
原码  补码 反码 的知识...用笔多算几次就明白了.
回复 使用道具 举报
学习学习!
回复 使用道具 举报
byte也一直是我的老大难呀
回复 使用道具 举报
这个不可能了,超出了
回复 使用道具 举报
不可能了,这个超出byte的范围了
回复 使用道具 举报
Jackron 来自手机 中级黑马 2015-7-8 21:54:17
14#
-128~127
回复 使用道具 举报
byte 类型  取值范围 -128 至 127   
回复 使用道具 举报
130默认是int类型
回复 使用道具 举报
哎呀 这其实没什么用的.你想这样会损失精度 实际中谁会用到呢?
回复 使用道具 举报
430422 发表于 2015-7-8 10:16
(int类型)0000 0000 1000 0010变成 (byte类型)1000 0010 反码 1111 1101 补码 1111 1110 即 -126 ...

为什么得到补码后,不再变成原码再赋值给b
回复 使用道具 举报
学习学习         
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马