移位运算符仅针对 int、uint、long 和 ulong 类型定义,因此运算的结果始终包含至少 32 位。 如果左侧操作数是其他整数类型(sbyte、byte、short、ushort 或 char),则其值将转换为 int 类型。
左移位运算符 <<
<<
运算符将其左侧操作数向左移动右侧操作数定义的位数。
左移运算会放弃超出结果类型范围的高阶位,并将低阶空位位置设置为零
1 | uint x = 0b_1100_1001_0000_0000_0000_0000_0001_0001; |
总结:左移相当于 X * 2的N次方 (乘以 2 的N次方)
1 | x<<1= x*2 |
右移位运算符 >>
>>
运算符将其左侧操作数向右移动右侧操作数定义的位数。
右移位运算会放弃低阶位。
1 | uint x = 0b_1001; |
总结:左移相当于 X / 2的N次方 (除以 2 的N次方)
1 | x>>1= x/2 |
参考: