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

位运算

作者头像
用户7272142
发布2023-10-11 21:13:12
1880
发布2023-10-11 21:13:12
举报
文章被收录于专栏:Republic博客Republic博客

之前我们在进制里面讲到了机器数、原码反码和补码以及负二进制为什么要用三种形式来表现。

image.png
image.png

我这里再补一张图,如果大家对原码反码和补码有什么不懂的话,可以去看我之前的笔记。 假设字长是8位

移位运算符

<<表示左移运算符 一般格式位x<\<n n>=0 上述表示将x的二进制数左移n位。将高位移出时候,需要将低位补0 比如:0010<<2 = 1000 计算(-10)<<2 = ? -10转成二进制为10001010这是原码 我们再把他转换成补码进行计算 11110110 <<2 = 11011000 再转成十进制-40 也就是乘以2^n。 >>表示右移运算符 一般格式x<\<n n>=0 上述表述将x的二进制数右移n位,将低位移出时候,需要将高位补0 x = 00111100 x>>2 = 00001111 正数的原码补码一样,但是附属如果要右移,左端需要补符号位 比如:x = -10 X>>1 = 11111011 再转成十进制就是-5 也就是除以2^n

位逻辑运算符

~(按位取反)

单目运算符,把一个数的二进制按位取反,即0变1,1变0 a = 4 二进制00000100 ~a = 11111011 结果为十进制的-5 其中负数的最高位也需要取反。

&(按位与)

双目运算符,对参加运算的两个操作数按二进制位进行逻辑与运算。如果两个相应位都是1,则该位运算的结果为1,否则为0。即 0&0 = 0 1&1 = 1 1&0 = 0 比如 00001011 & 00001010 ---------------------

代码语言:javascript
复制
    00001010

按位"与"运算常用来把一个数的某些位清0,保留另外一些位。例如把a的低四位清0,只保留高位,可做a&11110000运算。

|(按位或运算)

双目运算符,对参加运算的两个操作数进行"或运算",只要两个相应位有一个1时,该运算的结果为1,即0|0 = 0 0|1 = 1 1|1 = 0 比如 00110000 | 00001111 ----------------------

代码语言:javascript
复制
    00010011

按位"或"运算,可以把一个数的某些位置置1,其余为保持不变。例如把a的低四位置1,高四位不变,可作a|00001111运算

^按位异或运算

双目运算符,对参加运算的两个数按位进行异或运算。当两个相应位相异时,该位的运算结果为1,否则为0。即0^0 = 0 0^1 = 1 1^1 = 0 比如 00111001 ^ 00101010 ---------------------

代码语言:javascript
复制
       00010011

按位异或可以将一个数清0,比如a^a 1^1 = 0 0^0 = 0 所以a = 0; 二进制的位运算,只按相应位的数值进行进行运算,不受正数 负数 原码反码和补码的限制。逻辑运算与位逻辑运算的最大区别是前者得到的是0或1,而后者得到的是整型数据

优先级

单目位逻辑运算符的优先性与单目算数运算符、单目逻辑运算符、自增自减运算符同级别。同级运算符的结合性是自右向左 双目位逻辑运算符的优先级低于关系运算符,高于双目逻辑运算符。而双目位逻辑运算符中,&优先于^ ^优先于|

位自反赋值运算符

位运算符和赋值运算符可以组成位自反赋值运算符,共有五种,分别是>>=、<<=、&=、|=、^=。类似于+=是双目运算符,左边是变量右边是表达式,用于将某个变量和表达式进行指定位运算之后,把结果赋值给变量 例如a<<=b 相当于a = a<\<b 假设a的变量值是3 a<<2 即a 向左移两位(*2^2),结果是a = 12 再如 a =11,b= 5 则a|=b + 5; 相当于a = a|(b+5) 11|10 = 11 故a = 11 位自反赋值运算符和赋值运算符、算数自反赋值运算符同级,同级赋值运算符的结合性是自右向左

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 移位运算符
  • 位逻辑运算符
    • ~(按位取反)
    • &(按位与)
    • |(按位或运算)
    • ^按位异或运算
    • 优先级
    • 位自反赋值运算符
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com