移位操作符

下面以数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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 左移位操作符 << 按照操作符右侧指定的位数将操作符左边的操作数向左移动,低位补0 为什么转二进制后会是32个1...
    心扬阅读 773评论 0 1
  • <<和>>都是移位操作符用于位操作,须知这俩操作符都是二元操作符,右边的是移动的位数,对于左移而言,它移了几位就相...
    Stroman阅读 487评论 0 0
  • 1、左移运算(<<)## 在右边补0,数字变大 2、右移运算(>>)## 在左边补0,数字变小 3、无符号右移运算...
    这很重要吗阅读 1,944评论 0 0
  • 高级运算符 文档地址 作为 基本运算符 的补充,Swift 提供了几个高级运算符执行对数传值进行更加复杂的操作。这...
    hrscy阅读 859评论 0 2
  • 我是一名热衷于函数式编程的Clojurian(Clojure粉),网络ID是lambeta(λβ),读作/‘læm...
    lambeta阅读 2,725评论 0 18