前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >位运算

位运算

作者头像
Helloted
发布2022-06-06 18:58:07
7550
发布2022-06-06 18:58:07
举报
文章被收录于专栏:HellotedHelloted

一、位运算符

位取反(NOT)~

取反是一元运算符,对一个二进制数的每一位执行逻辑反操作。使数字1成为0,0成为1。

代码语言:javascript
复制
NOT 0111(十进制7)
  = 1000(十进制8)

值得注意的是此操作符与”逻辑非(!)”操作符不同

按位或(OR)|

按位或处理两个长度相同的二进制数,两个相应的二进位中只要有一个为1,该位的结果值为1。例如

代码语言:javascript
复制
        0101(十进制5)
     OR 0011(十进制3)
      = 0111(十进制7)

这一操作符需要与逻辑或运算符(

)区别开来

按位与(AND)&

按位与处理两个长度相同的二进制数,两个相应的二进位都为1,该位的结果值才为1,否则为0。例如:

代码语言:javascript
复制
         0101
     AND 0011
       = 0001

按位异或(XOR)^

按位异或运算,对等长二进制模式按位或二进制数的每一位执行逻辑异按位或操作。操作的结果是如果某位不同则该位为1,否则该位为0。例如

代码语言:javascript
复制
     	 0101
     XOR 0011
       = 0110

二、移位

移位是一个二元运算符,用来将一个二进制数中的每一位全部都向一个方向移动指定位,溢出的部分将被舍弃,而空缺的部分填入一定的值。在类C语言中,左移使用两个小于符号”«“表示,右移使用两个大于符号”»“表示。

逻辑移位

应用逻辑移位时,移位后空缺的部分全部填0。

代码语言:javascript
复制
       0001(十进制1)
 <<       3(左移3位)
     = 1000(十进制8)
代码语言:javascript
复制
       1010(十进制10)
 >>       2(右移2位)
	 = 0010(十进制2)
算术移位

算术移位要保证符号位的不改变(逻辑左移位补0, 逻辑右移位看符号位),算术移位和逻辑移位最大的区别,是算术移位在右移时不改变原来的数的符号而逻辑移位在右移时有可能改变原来的数的符号

img
img
img
img

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、位运算符
    • 位取反(NOT)~
      • 按位或(OR)|
      • 按位与(AND)&
      • 按位异或(XOR)^
      • 二、移位
        • 逻辑移位
          • 算术移位
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档