本帖最后由 寐海流风 于 2014-6-21 15:01 编辑
关于移位运算符遇到的问题:
1、double lo = 39.2>>4;
2、int i = 4>>32;int m = 4>>33;int n = 4>>34;
在1条目中,为什么编译不能通过?既然一个double类型的数值是8字节的,也就是64位,为什么不能移位呢?浮点数是怎么存储的呢?
在2条目中,为什么打印结果分别为i=4、2、1?既然一个int类型的数值是4字节的,也就是32位,打印结果却不怎么好理解。(怎么感觉当移位超过31位后,又重新给个4继续移位呢?也就是说移位32其实是移位(32-32);移位33其实是移位(33-32);移位34是移位(34-32)。)——但是我用“>>>”来操作,也是同样结果呢?
|