【发布时间】:2019-09-05 07:28:37
【问题描述】:
我在 java 中运行这个 (-3 >> 1) 并得到答案 -2 但根据我的说法,它应该是 -1,因为我想这就像 -3/2。请帮助我理解这一点。
int x = -3 >> 1;
System.out.println(x + " " + (-3 >> 1));
【问题讨论】:
-
@ItFreak 那是错误的。因为
int是有符号的并且-3 是负数,所以向右移动时会得到一个1 位。 -
哦,是的,你说得对
-
还要注意 -1 >> 1 == -1(考虑冒无限循环的风险)。
-n >> 1 == - (n/2) - (n%2)
标签: java