【发布时间】:2021-05-14 09:32:32
【问题描述】:
我写的时候
int x = 11<<12+12>>11;
并且 print x 编译器显示 45056 这是有道理的,因为它就像 11<<24>>11 然后首先从左到右解决它是 11 * 2^24 / 2^11。
类似
int x = 1<<12+1>>12;
它显示 2^23。但是当我写的时候
int x = 1<<22+22>>1;
它显示 2048 是 2^11 而不是 2^41。请纠正我的错误。
【问题讨论】:
-
我没有得到你得到的相同值。对于第一个示例,我得到
90112,然后第二个示例得到2。在第三个示例中,我得到2048。 -
一个 int 有多少位? 32 - 你认为如何将 44 位向左移动 32 位值?事实上,Java 只看低 5 位,所以它向左移动 22 位,然后向右移动 1 位。
标签: java bit-manipulation operators