ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

位操作符

2020-06-28 18:51:51  阅读:307  来源: 互联网

标签:符号 二进制 左移 取反 真值表 异或 操作符


1.位与 &

(1)位与符号是&,按照一个数的二进制位按位与。
(2)位与的真值表:1&1=1,1&0=0,0&1=0,0&0=0.
 举个例子:两个二进制数分别是 10101010、01111010。所谓位与就是二进制的每一位进行与,即要想把两个数(十进制、十六进制等)进行位与,必先把其转化为二进制数才能进行位与。

     10101010
    &01111010
结果为00101010

  

2.位或 |
(1)位或符号是|,按照二进制位按位或。
(2)位或的真值表:1|1=1,1|0=1,0|1=1,0|0=0。
举例:两个二进制数分别是 10101010、01111010。所谓位或就是二进制的每一位进行或,即要想把两个数(十进制、十六进制等)进行位与,必先把其转化为二进制数才能进行位或。

     10101010
    &01111010
结果为11111010

  

3.位取反 ~
(1)位取反是~
(2)二进制数按位取反,0变1,1变0,
(3)注意:举例:int a=45; int b, b=~(~a),取反两次还是原来的数。
(4)与之相对应的是逻辑取反 ! ,非真即假。结果只有0和1.

4.位异或 ^
(1)按照二进制位异或
(2)真值表:1^1=0,1^0=1,0^1=1,0^0=0;
可总结为每一位相同为0,不同为1.

5.左移<< 右移>>
(1)C语言的移位取决于数据类型,(嵌入式都是研究无符号数的数)
对于无符号数,左移时,右侧补零,相当于逻辑移位
对于无符号数,右移时,左侧补零,相当于逻辑移位,
对于有符号数,左移时,右侧补零,(叫算术移位)
对于有符号数,右移时,左侧补符号位(正数补零,负数补1)

总结(重点):
(1)位与,位或,位异或。
位与:(二进制数)与1位与无变化,与0位与变成0;
位或:(二进制数)与1位或变成1,与0位或无变化。
位异或:(二进制数)与1异或会取反,与0异或无变化。
(2)如果要求位与:12&96:第一步:把12、96转换为二进制数,第二步:每一位按照真值表位与。第三步:把位与之后的结果在转换成十进制或者十六进制(纯粹是为了方便人来看)。(位或、位异或、位取反同位与)
(3)要注意,真值表的1和0都是二进制的,
(4)左移右移是什么意思?二进制数左移又是什么意思?分析:一个十进制数10左移一位,也就是说从原来的十位移动到百位,变成了100,十进制的一位是10,左移一位相当于扩大了一位(10倍),再来想二进制,道理是不是一样的?

标签:符号,二进制,左移,取反,真值表,异或,操作符
来源: https://www.cnblogs.com/1024E/p/13204507.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有