下面以数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
网友评论