详解C语言中的位操作运算符可以怎么用?
目录
- 前言
- 位运算符介绍
- 位运算符的应用
- 一般案例
- 特殊用法
前言
最近在工作中碰到C语言中的位操作运算符,然后发现自己对这一块的内容比较模糊,所以打算写一篇博文记录这个知识点,今天是3月份的最后一天,所以加个班,弥补3月份没有写一篇博文的遗憾。位运算在嵌入式开发中较为常用,可以将它用于一些特殊的操作。下面进入正题,来聊一下C语言中常用的六大位运算符。
位运算符介绍
C语言提供了6个位运算操作符,这些运算符只能用于char、short、int、long类型。
以下单引号里面的符号即为所提的6个位操作运算符。
- ‘&’:按位与操作,按二进制位进行"与"运算;
- ‘|’:按位或操作,按二进制位进行"或"运算;
- ‘^’:按位异或操作,按二进制位进行"异或"运算;
- ‘~’:按位取反操作,按二进制位进行"取反"运算;
- ‘<<’:二进制左移运算符,将一个运算对象的各二进制位全部左移若干位,左边的二进制位丢弃,右边补0;
- ‘>>’:二进制右移运算符,将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
位运算符的应用
一般案例
假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:
A = 0011 1100
B = 0000 1101
对A和B按位操作运算符进行运算,则有:
A&B = 0000 1100
说明:A和B中对应位上的值进行与操作,类似于&&运算符,
0&0=0;
0&1=0;
1&0=0;
1&1=1;
A|B = 0011 1101
说明:A和B中对应位上的值进行或操作,类似于| | 运算符,
0|0=0;
0|1=1;
1|0=1;
1|1=1;
A^B = 0011 0001
说明:A和B中对应位上的值进行异或操作,相同为0,相异为1,0^0=0;
0^1=1;
1^0=1;
1^1=0;
~A = 1100 0011
说明:对A中每一位上的值进行取反操作,1取反为0,0取反为1。
A << 2 等于 1111 0000,即十进制的240。
A >> 2 等于 0000 1111,即十进制的15。
特殊用法
1)按位与运算符&经常用来屏蔽某些二进制位,比如:
x = 5;(0101)
y = 10;(1010)
z = x & y
此时的z等于0(0000)。
2)按位或运算符|常用于将某些二进制位设置为1,比如:
x = 5;(0101)
y = 10;(1010)
z = x | y
此时的z等于15(1111)。
3)按位异或运算符^可以将两个数的对应位不相同时将该位设置为1,相同时将该位设置为0。
后续如果有更好的例子就可以放上来。
详解C语言中的位操作运算符可以怎么用?相关推荐
- 武林c语言,详解C语言中条件编译
预处理器提供条件编译,程序的不同部分可以在不同的条件下编译,从而产生不同的目标代码文件,这对于程序移植和调试非常有用,本文是武林技术频道小编给为大家带来的详解中条件编译,一起来了解一下吧! 通常情况, ...
- c语言 字符串 strncpy,详解c语言中的 strcpy和strncpy字符串函数使用
详解c语言中的 strcpy和strncpy字符串函数使用 strcpy 和strcnpy函数--字符串复制函数. 1.strcpy函数 函数原型:char *strcpy(char *dst,cha ...
- 详解C语言中头文件的作用
大家好,先做个自我介绍,我是天蓬,欢迎阅读本篇博文. 由于本人理解能力不是很好,阅读他人文章时,常常看得晕头晕脑,这让我很是头疼,我想,世界上一定还有和我一样的人(哈哈,不是说你么笨哦).所以,我将会 ...
- (计算机组成原理)第二章数据的表示和运算-第二节7:详解C语言中的强制类型转换
文章目录 (1)无符号数和有符号数 (2)长整数变为短整数 (3)短整数变为长整数 在学习完前面几节的内容后,相信大家对数据是如何在计算机中存储.运算的有了更加深入的认识,那么接下来我们就以更深层次的 ...
- c语言字 字符串转换成数组_C语言学习教程之详解C语言中的字符串数组
在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include 总结 以上 ...
- c语言中数组的概念及作用,详解C语言中的指针与数组的定义与使用
指针的特点 他就是内存中的一个地址 指针本身运算 指针所指向的内容是可以操作的 操作系统是如何管理内存的 栈空间 4M~8m的大小 当进入函数的时候会进行压栈数据 堆空间 4g的大小 1g是操作系统 ...
- C语言学习教程之详解C语言中的字符串数组
在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include <s ...
- c语言中文字符串数组,详解C语言中的字符串数组
在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include #incl ...
- c语言中的字符串数组,详解C语言中的字符串数组
在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include #incl ...
最新文章
- 最大流 ---- 最小路径覆盖 ---- P2765魔术球问题(网络流24题)
- 尾田荣一郎参与制作!两部《海贼王》VR游戏正在开发中
- 电脑微信多开方法_微信电脑端多开方法
- java轩辕剑天之痕游戏攻略_轩辕剑之天之痕游戏攻略大全
- 发布npm包时遇到的问题及解决方法
- 一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手
- 西门子滚筒洗衣机教程_西门子洗衣机怎么样 西门子洗衣机哪款好
- asp.net实现bt和pt—tracker request
- MySQL单表删除重复列SQL语句
- 用Python爬取3万多条评论,看韩国人如何评价电影《寄生虫》?
- redirect与forward跳转的区别
- 磁盘blk_update_request: I/O error
- 后缀树后缀数组LCP
- Mapstruct使用介绍
- 电子计算机 隐形眼镜,戴隐形眼镜看电脑要注意什么
- speedoffice表格如何冻结窗格?
- 长期在计算机房内会有多大辐射,机房辐射范围和预防辐射?计算机房里面适用的屏蔽隔离防辐射材料是什么?...
- python羊车门问题的正确解答_羊车门问题python模拟
- 计算机网络超级详细的总结(1)
- 英语口语练习三十五之To tell the truth... 老实说……