system.out.println(-8>>>2),输出1073741822。求解释。谢谢。 system.out.println(-8>>>2),输出1073741822。求解释。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 -8的二进制表示为:0000 0000 0000 0000 0000 0000 0000 1000?右移两位为0000 0000 0000 0000 0000 0000 0000 0010,不是等于-2了吗?它中间是三个>>>,不是两个>>。如果是两个>>,答案就是-2.我发现一个问题:|-2| + 1073741822 = 1073741724 = 2^30。不知道是否是巧合。 在JAVA中 int是一个含符号的变量0x0~0x7FFFFFFF为正数,0x80000000~0xFFFFFFFF为负数。其中0xFFFFFFFF表示的是-1,-8是用0xFFFFFFF8表示的。把这个数无符号右移2位,就是0x3FFFFFFE;把这个数有符号右移2位,就是0xFFFFFFFE;(用计算器把它转换一下吧?) -8: 1111 1111 1111 1111 1111 1111 1111 1000 或者0xfffffff8无符号右移两位: 0011 1111 1111 1111 1111 1111 1111 1110 或者0x3ffffffe 求前辈指点,强制类型转换 Missing message for key submit1 很经典的面试题,第二次遇见了,还是没有答上来 一个关于简单的java socket问题。 frameset框架取出来的 怎么都是空白? JAVA虚拟机报错,求高手帮忙,底手勿回!骗分者勿进 java 如何生成可以在一个完全脱离jvm 的win 系统中运行呢? 请问:如何实现动态更改数据库名的存储过程 谈谈 Class.ClassForName 如何让PopupMenu向上弹出?100分相送 关于java读写文件的问题 求关于动态变换圆点的程序
右移两位为0000 0000 0000 0000 0000 0000 0000 0010,不是等于-2了吗?
它中间是三个>>>,不是两个>>。如果是两个>>,答案就是-2.
我发现一个问题:|-2| + 1073741822 = 1073741724 = 2^30。不知道是否是巧合。
0x0~0x7FFFFFFF为正数,0x80000000~0xFFFFFFFF为负数。
其中0xFFFFFFFF表示的是-1,-8是用0xFFFFFFF8表示的。
把这个数无符号右移2位,就是0x3FFFFFFE;
把这个数有符号右移2位,就是0xFFFFFFFE;
(用计算器把它转换一下吧?)
无符号右移两位: 0011 1111 1111 1111 1111 1111 1111 1110 或者0x3ffffffe