我在互联网上发现了这个 java 问题,并对此有一些疑问。
哪些陈述是准确的:
- a) >> 执行有符号移位,而 >>> 执行无符号移位。
- b) >>> 执行有符号移位,而 >> 执行无符号移位。
- c) << 执行有符号移位,而 <<< 执行无符号移位。
- d) <<< 执行有符号移位,而 << 执行无符号移位。
我有点不确定带符号的移位是什么,这是否意味着它保留二进制数的符号而不管移位本身发生了什么(这对我来说最有意义)还是意味着 MSB 确实除非在移位操作本身中被覆盖,否则不会更改。
所以
- a) 正确:无论您使用 >> 进行多少次轮班,MSB 始终保留为其原始因此已签名?而 >>> 将始终用 0 覆盖 MSB,因此无符号?
- b) 错误,因为上面的解释
- c) 不确定,因为第一位可以用 << 移位操作覆盖,因此不保留其符号?
- d) 再次不确定。