黑马程序员技术交流社区
标题:
关于多重转换的一个疑惑!!!
[打印本页]
作者:
王杰
时间:
2012-1-7 09:13
标题:
关于多重转换的一个疑惑!!!
本帖最后由 苳眠 于 2012-1-7 19:59 编辑
class Test01
{
public static void main(String[] args)
{
System.out.println( (int)(char)(byte)-1 );
}
}
复制代码
照理说,从int转换为byte在转换为char在转换为int.就是回到原点了呀.
那就应该还是-1呀.
我的运行结果却是65535
运行结果为什么不是-1???
我去网上查了,说是存储方式不同还有符号扩展.但是没有看懂.很疑惑
作者:
李建平
时间:
2012-1-7 10:05
这个是因为在计算机中负数的二进制码有关,另外int 型占四个字节32位而char型占2个字节16位,
int型-1的二进制码是32个1——“11111111111111111111111111111111 ”,
转换成char型后就成了16个1“1111111111111111 ”,
当再次进行强制转制的时候“1111111111111111 ”转换成int就成了“00000000000000001111111111111111 ”了也就是65535.
作者:
罗利民
时间:
2012-1-7 10:09
所有数字在底层都是以二进制形式存在,注意不同类型各有多少位
作者:
罗利民
时间:
2012-1-7 10:43
负数以补码形式存在
作者:
王杰
时间:
2012-1-7 13:22
李建平 发表于 2012-1-7 10:05
这个是因为在计算机中负数的二进制码有关,另外int 型占四个字节32位而char型占2个字节16位,
int型- ...
哦哦 谢谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2