移位运算符 (<< ,>> ,>>>)

<<  左移运算

>>  右移运算

>>>  无符号右移

语法格式:  操作数 << 移位的次数

===============================================================================

例子:    4 << 2

在8位的计算机中进行上述例子操作:  移位前 0000 0100  移位后 0001 0000

上述例子结果: 4 变成了 16 ,相当于番了 4 倍(也就是2 ^2倍)

结论:  如果要进行正数的 2 ^n 的乘法运算,可以使用移位运算.同理,要进行正数的 2 ^n 的除法运算,可以使用右移运算

================================================================================

上面只是举了一个简单的例子方便理解,现在来看看复杂的例子

例子  -7 >> 2

提示:  -7 的原码 1000 0111 在计算机中用补码 1111 1001表示 

在8位计算机中进行上述例子操作  移位前 1111 1001  移位后 1111 1110

再将 1111 1110 用原码 1000 0010表示

上述例子结果:  -7 变成了 -2(因为溢出问题,精度会丢失)

注意:  在对负数的操作中

<< 左移运算符进行移位时 ,可以发现在二进制数的右侧补充的是 0

>> 右移运算符则有些不同 ,它在进行操作时是在二进制数左侧补充 1

=================================================================================

例子:  11 >>> 2

在8位计算机中进行上述例子操作:  移位前 0000 1011  移位后 0000 0010

上述例子结果:  11 变成了 2

注意:  无符号右移是在左边补 0, 正数的无符号右移 与 右移操作结果相同,负数才有区别

例子:  -3 >>> 1

1000 0011   1111 1101   0111 1110   

在8位计算机中进行上述例子操作:  移位前 1111 1101  移位后 0111 1110

上述例子结果:  -3 变成了 126

posted @ 2020-10-13 11:49  无名氏法师  阅读(393)  评论(0)    收藏  举报