目录

  • 前言
  • 位运算符介绍
  • 位运算符的应用
    • 一般案例
    • 特殊用法

前言

最近在工作中碰到C语言中的位操作运算符,然后发现自己对这一块的内容比较模糊,所以打算写一篇博文记录这个知识点,今天是3月份的最后一天,所以加个班,弥补3月份没有写一篇博文的遗憾。位运算在嵌入式开发中较为常用,可以将它用于一些特殊的操作。下面进入正题,来聊一下C语言中常用的六大位运算符。

位运算符介绍

C语言提供了6个位运算操作符,这些运算符只能用于char、short、int、long类型。

以下单引号里面的符号即为所提的6个位操作运算符。

  1. ‘&’:按位与操作,按二进制位进行"与"运算;
  2. ‘|’:按位或操作,按二进制位进行"或"运算;
  3. ‘^’:按位异或操作,按二进制位进行"异或"运算;
  4. ‘~’:按位取反操作,按二进制位进行"取反"运算;
  5. ‘<<’:二进制左移运算符,将一个运算对象的各二进制位全部左移若干位,左边的二进制位丢弃,右边补0;
  6. ‘>>’:二进制右移运算符,将一个运算对象的各二进制位全部右移若干位,正数左补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语言中的位操作运算符可以怎么用?相关推荐

  1. 武林c语言,详解C语言中条件编译

    预处理器提供条件编译,程序的不同部分可以在不同的条件下编译,从而产生不同的目标代码文件,这对于程序移植和调试非常有用,本文是武林技术频道小编给为大家带来的详解中条件编译,一起来了解一下吧! 通常情况, ...

  2. c语言 字符串 strncpy,详解c语言中的 strcpy和strncpy字符串函数使用

    详解c语言中的 strcpy和strncpy字符串函数使用 strcpy 和strcnpy函数--字符串复制函数. 1.strcpy函数 函数原型:char *strcpy(char *dst,cha ...

  3. 详解C语言中头文件的作用

    大家好,先做个自我介绍,我是天蓬,欢迎阅读本篇博文. 由于本人理解能力不是很好,阅读他人文章时,常常看得晕头晕脑,这让我很是头疼,我想,世界上一定还有和我一样的人(哈哈,不是说你么笨哦).所以,我将会 ...

  4. (计算机组成原理)第二章数据的表示和运算-第二节7:详解C语言中的强制类型转换

    文章目录 (1)无符号数和有符号数 (2)长整数变为短整数 (3)短整数变为长整数 在学习完前面几节的内容后,相信大家对数据是如何在计算机中存储.运算的有了更加深入的认识,那么接下来我们就以更深层次的 ...

  5. c语言字 字符串转换成数组_C语言学习教程之详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include 总结 以上 ...

  6. c语言中数组的概念及作用,详解C语言中的指针与数组的定义与使用

    指针的特点 他就是内存中的一个地址 指针本身运算 指针所指向的内容是可以操作的 操作系统是如何管理内存的 栈空间 4M~8m的大小 当进入函数的时候会进行压栈数据 堆空间 4g的大小 1g是操作系统 ...

  7. C语言学习教程之详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include <s ...

  8. c语言中文字符串数组,详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include #incl ...

  9. c语言中的字符串数组,详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include #incl ...

最新文章

  1. 最大流 ---- 最小路径覆盖 ---- P2765魔术球问题(网络流24题)
  2. 尾田荣一郎参与制作!两部《海贼王》VR游戏正在开发中
  3. 电脑微信多开方法_微信电脑端多开方法
  4. java轩辕剑天之痕游戏攻略_轩辕剑之天之痕游戏攻略大全
  5. 发布npm包时遇到的问题及解决方法
  6. 一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手
  7. 西门子滚筒洗衣机教程_西门子洗衣机怎么样 西门子洗衣机哪款好
  8. asp.net实现bt和pt—tracker request
  9. MySQL单表删除重复列SQL语句
  10. 用Python爬取3万多条评论,看韩国人如何评价电影《寄生虫》?
  11. redirect与forward跳转的区别
  12. 磁盘blk_update_request: I/O error
  13. 后缀树后缀数组LCP
  14. Mapstruct使用介绍
  15. 电子计算机 隐形眼镜,戴隐形眼镜看电脑要注意什么
  16. speedoffice表格如何冻结窗格?
  17. 长期在计算机房内会有多大辐射,机房辐射范围和预防辐射?计算机房里面适用的屏蔽隔离防辐射材料是什么?...
  18. python羊车门问题的正确解答_羊车门问题python模拟
  19. 计算机网络超级详细的总结(1)
  20. 英语口语练习三十五之To tell the truth... 老实说……

热门文章

  1. HTML5理想很丰满,但现实很骨感
  2. E1000、E1000E和VMXNET3虚拟网卡对比测试
  3. Stm32F103R6之ADC
  4. 位,字节和字区别(bit,byte,word)
  5. 【windows 自带的certutil 完成 md5, sha1 sha256校验】
  6. HTML5 知识 整理
  7. 洪君:vbs:仿抖音告白洪君
  8. mysql lat long_php mysql比较long和lat,返回10英里以下
  9. 高并发MINA框架,网络编程(SOCKET)实现,简单的网络聊天DEMO
  10. Mina快速编码测试验证示例