250429-运算符
答案
C
错因
位运算符有三种,左移<<(高位丢弃,末尾补0) ; 右移>>(高位补符号位,低位丢弃); 无符号右移>>>(高位补0 ,低位丢弃); 为什么没有"无符号左移"? 因为左移不涉及到符号位问题,符号位始终都是在最高位,所以左移一定会丢弃符号位,末尾一定是补0,不存在补1的情况,末尾补1没有意义
AI润色后:
Java 中的位运算符主要有三种:
- 左移
<<
:高位丢弃,低位补 0 - 右移
>>
:高位补符号位(即保留原符号),低位丢弃 - 无符号右移
>>>
:高位始终补 0,低位丢弃
那么,为什么没有“无符号左移”<<<
呢?
因为左移本身就不涉及符号位的保留问题。左移时,无论操作数是正是负,最高位(包括符号位)都会被移出并丢弃,低位始终补 0,不存在“补 1”或保留符号位的情况。
换句话说,左移操作天然就是“无符号”的,不需要额外的无符号版本。即使原始数是负数,左移后符号也可能发生改变,但这正是补码机制的自然结果,而不是符号位干扰。