详解C语言中的位 *** 作运算符可以怎么用?

详解C语言中的位 *** 作运算符可以怎么用?,第1张

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

前言

最近在工作中碰到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。


后续如果有更好的例子就可以放上来。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/562697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存