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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天我一室友问我一个问将int型298转换成byte型是42.那么将int型130转换成byte型是多少呢?刚开始我按照书上方法说是130.结果却是-126呵呵。同志们请说出自己的观点

5 个回复

倒序浏览
哪本误人子弟的书说int 130转为byte还是130?曝光一下书名吧,免得其他新人上当。

byte的取值范围是-128到+127 无论如何不可能出现130。int强转为byte很简单,把int 130的二进制表示写出来:
0000 0000 0000 0000 0000 0000 1000 0010

从第一字节处截断,剩下 1000 0010就是byte。这个byte代表的值可以根据2's complement表示法来推算,即-2^(7) + 2 = -126
回复 使用道具 举报 1 0
应该注意的是byte型变量的范围。在计算机系统中,数值一律用补码来表示(存储),根据楼上的截取之后取补码,就能得到值。
回复 使用道具 举报
fantacyleo 发表于 2015-3-30 21:06
哪本误人子弟的书说int 130转为byte还是130?曝光一下书名吧,免得其他新人上当。

byte的取值范围是-128到 ...

这个算法好简单。1代表负数是吧。
回复 使用道具 举报
截取之后,最高位是1,明显是负数。减1取反,就对应这个负数的正数126,所以这个数是-126
回复 使用道具 举报
冻了冬天 发表于 2015-3-30 23:35
这个算法好简单。1代表负数是吧。

最高位的1代表负数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马