黑马程序员技术交流社区

标题: 问题和误区——关于强制类型转换 [打印本页]

作者: 冻了冬天    时间: 2015-3-30 19:18
标题: 问题和误区——关于强制类型转换
今天我一室友问我一个问将int型298转换成byte型是42.那么将int型130转换成byte型是多少呢?刚开始我按照书上方法说是130.结果却是-126呵呵。同志们请说出自己的观点
作者: fantacyleo    时间: 2015-3-30 21:06
哪本误人子弟的书说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
作者: leonard    时间: 2015-3-30 21:40
应该注意的是byte型变量的范围。在计算机系统中,数值一律用补码来表示(存储),根据楼上的截取之后取补码,就能得到值。
作者: 冻了冬天    时间: 2015-3-30 23:35
fantacyleo 发表于 2015-3-30 21:06
哪本误人子弟的书说int 130转为byte还是130?曝光一下书名吧,免得其他新人上当。

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

这个算法好简单。1代表负数是吧。
作者: 快乐ABC    时间: 2015-3-30 23:53
截取之后,最高位是1,明显是负数。减1取反,就对应这个负数的正数126,所以这个数是-126
作者: fantacyleo    时间: 2015-3-31 00:25
冻了冬天 发表于 2015-3-30 23:35
这个算法好简单。1代表负数是吧。

最高位的1代表负数




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2