~
<<
>>
&
^
|
如果运算对象是 char 这样的小整型,那么它的值会被自动提升为 int 这样的大整型。
建议仅将位运算符用于处理无符号类型。
移位运算符右侧的运算对象一定不能为负,而且值必须严格小于结果的位数,否则会产生未定义的行为。
左移运算符( <<
)在右侧插入值为 0 的二进制位。
右移运算符( >>
)的行为依赖于左侧运算对象的类型:
如果该运算对象是无符号类型,则在左侧插入值为 0 的二进制位;
如果该运算对象是带符号类型,则在左侧插入符号位的副本(或值为 0 的二进制位),如何选择要视具体环境而定。