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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

评分

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

查看全部评分

18 个回复

正序浏览
学习学习         
回复 使用道具 举报
430422 发表于 2015-7-8 10:16
(int类型)0000 0000 1000 0010变成 (byte类型)1000 0010 反码 1111 1101 补码 1111 1110 即 -126 ...

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

而01111111的值是-126  答案是-126
回复 使用道具 举报
byte是两个字节的 是16bit   130的补码为
补码:00000000 00000000 00000000 10000001
反码:00000000 00000000 00000000 10000000
原码:00000000 00000000 00000000 01111111

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

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马