按位运算符讲解

我们都知道,数值和字符在内存里都是以 0 和 1 组成序列的形式存在的,,打个比方:

10 = 00001010
//这里以一个字节为例子,具体多少位由使用的编程语言决定

我们可以对每个位置上的数做出操作,这也是按位运算符的运算逻辑。

按位运算符总共有6个:

  1. & 按位与
  2. | 按位或
  3. ^ 按位异或
  4. << 左移
  5. >> 右移
  6. ~ 按位取反

我们来一个个看


& 按位与


& 是个双目运算符,双目是指参与运算的对应二进制位,它的逻辑也比较容易理解:对应二进制位均为1时值才为1,否则为0,但是要注意的是,参与运算的数都以补码的形式存在,大概介绍一下补码:正数的补码就是其本身,负数的补码在原码的基础上符号位不变,其余位取反。

举个容易理解的例子,3&4

3 : 00000011//3的2进制补码
4 : 00000100//4的2进制补码00000000// 3&4结果为0的2进制补码

不难看出,任意数 &0都为0。我们可以用 **&**来使特定位为 0


| 按位或


| 也是个双目操作符,它的逻辑很简单:运算中对应的位中有 1 那么结果就是 1

1 : 00000001
3 : 0000001100000011//结果为3

^ 按位异或


^ 是个双目操作符,逻辑也比较清晰:对应的位相同结果为 0,不同结果就为 1

1 : 00000001
3 : 0000001100000010//结果为2

我们看一小段代码:

int main()
{int n = 1;int m = 2;n ^= m;m ^= n;n ^= m;printf("%d,%d",n,m);return 0;
}

我们惊奇地发现 n 与 m的值完成了互换,这是为什么呢?

一个数与自身进行按位异或运算,其结果必为0,一个任意数与0进行异或运算,结果为其本身。

可以自己多写几组运算品一品。


<< 左移 、>>右移


移位运算符将位按某个特定值左移或者右移,超过的位丢失,空出的位补 0

1 : 00000001
1<<1 : 00000010//为2
4 :00000100
4>>1 : 00000010//为2

不难看出,<<1 (左移1) 有乘 2的效果,>>1 (右移1) 有除2 的效果

另外,小数 >>0 可以取整


~ 按位取反


符如其名,~ 的逻辑是:对应的位 1 变 0,0 变 1

【C语言】按位运算符相关推荐

  1. 常见位操作及运算应用举例:1,C语言中位运算符异或“∧”的作用​​​​​​​2,异或运算的作用3,(与运算)、|(或运算)、^(异或运算)

    1 C语言中位运算符异或"∧"的作用: 异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧0=0,0∧1=1,1∧1=0 ...

  2. C语言中位运算符有哪些

    C语言中位运算符有: 位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运 ...

  3. c语言位运算符读音,C语言六种位运算符

    位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&&quo ...

  4. c语言使用位运算符包含头文件,C语言的运算符

    c语言中可以使用加减乘除(+,-,*,/)以及取余(%)这些操作符 注意点: a.0不能做除数,不能对0进行取余,0.0可以做除数,结果是无穷大. b.取余操作的两边必须是整数: c.两个整数相除,结 ...

  5. 【老九学堂】【初识C语言】位运算符

    位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型 ...

  6. C语言按位运算符 按位逻辑运算 移位运算 及其用法

    目录 按位逻辑运算符 移位运算符 按位逻辑运算符 C语言提供了四种按位逻辑运算符 注:他们的操作数必须是整数. 1.按位取反(~) ~运算符把0变为1,把1变为0,如下例子所示: ~(0100 100 ...

  7. C语言中 二进制有哪几个运算符 (举例),C语言中位运算符有哪些

    前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...

  8. 转: C语言中位运算符异或“∧”的作用

    转自: http://blog.sina.com.cn/s/blog_74a459380101d6xl.html 异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假): ...

  9. c语言提供了6个位运算,C语言基础丨运算符之位运算符(六)

    对于更多紧凑的数据,C 程序能够用独立的位或多个组合在一块儿的位来存储信息.文件访问许可就是一个常见的应用案例.位运算符容许对一个字节或更大的数据单位中独立的位作处理:能够清除.设定,或者倒置任何位或 ...

  10. C语言 位运算符详解 (使用二进制实例深入学习理解位运算符使用原理)

    C语言中位运算符共有六种 目录 1.&(按位与) 2. |(按位或) 3.^(按位抑或) 4.~(按位取反)

最新文章

  1. C++ sort()函数的cmp含义
  2. 流式计算框架Storm 编程案例部署Linux结果演示及pom依赖
  3. Spring Boot 2.X 使用@Cacheable时注意事项
  4. C#——《C#语言程序设计》实验报告——综合练习——委托、Lambda表达式、LINQ、接口
  5. 严格模式 华为_华为千元机虽然好,但是千万别乱选,这三款才是内行人的最爱...
  6. HDU - 3709 Balanced Number(数位dp)
  7. Laravel-admin hasMany表单关联提交报错字段 无详细信息错误说明
  8. html下拉框选择后自动刷新,html select 下拉框刷新页面后保留上一次选择的值
  9. DWZUI(1.3)框架中遇到的两个问题
  10. c语言表白代码颜色,C语言告白代码,一闪一闪亮晶晶~
  11. Cisco PPPOE配置详解
  12. 《流畅的Python》读书笔记——Python函数装饰器和闭包
  13. [Java] 获取当前Project所在的路径
  14. shiro自定义session过期时间
  15. Tomcat热部署三种方式的详细说明
  16. essay写作要点以及正确的书写格式
  17. 面试前一些非技术注意事项--程序员面试金典
  18. 利用C++求解一元二次方程
  19. 跟着廖雪峰学python 006
  20. 森林防火视频监控及指挥系统解决方案

热门文章

  1. 学会OpenStack之核心Nova服务一篇就够了!!!
  2. 基于平移布林通道的系统
  3. Spring Boot整合Redis缓存(Lettuce)
  4. Pyecharts数据可视化之折线图(阶梯图、平滑曲线图、面积图)、K线图、常用配置项
  5. 二叉树——前序和中序得到后序
  6. 汇编语言答案(王爽)第三版
  7. html5分镜头脚本范例,分镜头脚本教程图解
  8. Revit建模如何一键“生成场地和基础垫层”
  9. 【重点】Selenium + Nightwatch 自动化测试环境搭建
  10. WinInet编程中如何使用异步