移位操作符

2017-06-09  本文已影响0人  小贱嘎嘎

下面以数17为例展示一下对正负17进行移位后的结果

正数17机器码表示为

0000 0000 0000 0000 0000 0000 0001 0001

负数17机器码表示为(原码求反再加1)

1111 1111 1111 1111 1111 1111 1110 1111

左移操作符<<

定义:左移操作符规定将操作符左边的数向左移动n位(低位补0)

求17<<2的值

1,17左移两位后二进制为 0000 0000 0000 0000 0000 0000 0100 0100 
2,转化为十进制为68(十进制)
3,17<<2 = 68

求-17<<2的值

1,-17左移两位后二进制为1111 1111 1111 1111 1111 1111 1011 1100
2,转成对应原码是      1000 0000 0000 0000 0000 0000 0100 0100
3,转换为十进制为 -68
4,-17<<2 = -68

右移操作符>>

定义:右移位操作符按照操作符右侧指定的位数移动n位,对于正数来说在高位插入0,对于负数的话在高位插入1

求17>>2的值

1,17右移两位后二进制为 0000 0000 0000 0000 0000 0000 0000 0100
2,转化为十进制为4
3,17>>2 = 4

求-17>>2的值

1,-17右移两位后二进制为 1111 1111 1111 1111 1111 1111 1111 1011
2,转化为原码为 1000 0000 0000 0000 0000 0000 0000 0101
3,十进制表示为 -5

右移操作符>>>

定义:右移位操作符按照操作符右侧指定的位数移动n位,但无论正负都在高位补0

求17>>>2的值

1,17右移两位后二进制为 0000 0000 0000 0000 0000 0000 0000 0100
2,转化为十进制为4
3,17>>2 = 4

求-17>>>2的值

1,右移后为 0011 1111 1111 1111 1111 1111 1011 1100
2,转化为十进制为1073741819
3,-17>>>2 = 1073741819
上一篇下一篇

猜你喜欢

热点阅读