【C语言】按位运算符
按位运算符讲解
我们都知道,数值和字符在内存里都是以 0 和 1 组成序列的形式存在的,,打个比方:
10 = 00001010
//这里以一个字节为例子,具体多少位由使用的编程语言决定
我们可以对每个位置上的数做出操作,这也是按位运算符的运算逻辑。
按位运算符总共有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,C语言中位运算符异或“∧”的作用2,异或运算的作用3,(与运算)、|(或运算)、^(异或运算)
1 C语言中位运算符异或"∧"的作用: 异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧0=0,0∧1=1,1∧1=0 ...
- C语言中位运算符有哪些
C语言中位运算符有: 位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运 ...
- c语言位运算符读音,C语言六种位运算符
位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&&quo ...
- c语言使用位运算符包含头文件,C语言的运算符
c语言中可以使用加减乘除(+,-,*,/)以及取余(%)这些操作符 注意点: a.0不能做除数,不能对0进行取余,0.0可以做除数,结果是无穷大. b.取余操作的两边必须是整数: c.两个整数相除,结 ...
- 【老九学堂】【初识C语言】位运算符
位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型 ...
- C语言按位运算符 按位逻辑运算 移位运算 及其用法
目录 按位逻辑运算符 移位运算符 按位逻辑运算符 C语言提供了四种按位逻辑运算符 注:他们的操作数必须是整数. 1.按位取反(~) ~运算符把0变为1,把1变为0,如下例子所示: ~(0100 100 ...
- C语言中 二进制有哪几个运算符 (举例),C语言中位运算符有哪些
前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...
- 转: C语言中位运算符异或“∧”的作用
转自: http://blog.sina.com.cn/s/blog_74a459380101d6xl.html 异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假): ...
- c语言提供了6个位运算,C语言基础丨运算符之位运算符(六)
对于更多紧凑的数据,C 程序能够用独立的位或多个组合在一块儿的位来存储信息.文件访问许可就是一个常见的应用案例.位运算符容许对一个字节或更大的数据单位中独立的位作处理:能够清除.设定,或者倒置任何位或 ...
- C语言 位运算符详解 (使用二进制实例深入学习理解位运算符使用原理)
C语言中位运算符共有六种 目录 1.&(按位与) 2. |(按位或) 3.^(按位抑或) 4.~(按位取反)
最新文章
- C++ sort()函数的cmp含义
- 流式计算框架Storm 编程案例部署Linux结果演示及pom依赖
- Spring Boot 2.X 使用@Cacheable时注意事项
- C#——《C#语言程序设计》实验报告——综合练习——委托、Lambda表达式、LINQ、接口
- 严格模式 华为_华为千元机虽然好,但是千万别乱选,这三款才是内行人的最爱...
- HDU - 3709 Balanced Number(数位dp)
- Laravel-admin hasMany表单关联提交报错字段 无详细信息错误说明
- html下拉框选择后自动刷新,html select 下拉框刷新页面后保留上一次选择的值
- DWZUI(1.3)框架中遇到的两个问题
- c语言表白代码颜色,C语言告白代码,一闪一闪亮晶晶~
- Cisco PPPOE配置详解
- 《流畅的Python》读书笔记——Python函数装饰器和闭包
- [Java] 获取当前Project所在的路径
- shiro自定义session过期时间
- Tomcat热部署三种方式的详细说明
- essay写作要点以及正确的书写格式
- 面试前一些非技术注意事项--程序员面试金典
- 利用C++求解一元二次方程
- 跟着廖雪峰学python 006
- 森林防火视频监控及指挥系统解决方案