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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Short a =128;byte b =(byte)a

12 个回复

正序浏览
byte是一个字节,8位,范围-2的8次方-128,到2的8次方减1就是127
回复 使用道具 举报
clh 中级黑马 2014-9-7 15:59:32
12#
试一下,不就知道了
回复 使用道具 举报
编译错误 byte类型的最大值是127  如果在-128到127之间的话就是byte类型的a=b
回复 使用道具 举报
硬要强转的话,就是-128.。。。
回复 使用道具 举报
short a=128,二进制是0000-0000 1000-0000,当执行byte b =(byte)a;的时候,由于byte变量只占用一个8位,所以就将0000-0000 1000-0000的最末8位存入byte变量b中,也就是说,b的值为1000-0000,这样1变成了最高位,所以是个负数,逐位取反得到0111-1111,即127,再加1的到128,就是说b=-128.
回复 使用道具 举报
MeryStyle 来自手机 中级黑马 2014-9-7 00:49:09
8#
是 -8 么??
回复 使用道具 举报
塞肥肥塞牙人 发表于 2014-9-6 23:30
亲,不对吧,我还是认可沙发的

你的Short 是大写的S 不能转,要是小写的short,就是b = -128
回复 使用道具 举报
粺¹³¼畅 发表于 2014-9-6 22:42
画了个图,你看看,帮助你理解。

亲,不对吧,我还是认可沙发的
回复 使用道具 举报
不能转,报错。
Short不能转,short可以,转完后得-128  0xff
回复 使用道具 举报
画了个图,你看看,帮助你理解。

2014-09-06_224058.png (3.17 KB, 下载次数: 3)

2014-09-06_224058.png
回复 使用道具 举报
结果是-128;因为byte 范围-128-----127 ,可以理解成一个圆形范围,127的下一个值就是-128
回复 使用道具 举报
short和byte不能互相转,即使真的能也是超过了范围,为-127
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马