C语言之位运算

指针和位运算很适合编写系统软件的需要。

位运算指进行二进制位的运算。

  按位与”运算符 & 用途

1)清零

2)取一个数中某些指定位(比如只需要低8位)

3)想保留哪一位保留下来,就与一个数进行&运算,此数在该位取1。

  按位或 |

  按位异或(XOR) ^  同0异1

1)使特定位翻转

2)与0相异或,保留原值

3)交换两个值,不用临时变量

//假如a=3,b=4。将a和b交换值
a=a^b;
b=b^a;
a=a^b;

b=b^(a^b)=a^b^b=a;( b^b=0)

a=a^b^(b^a^b)=a^a^b^b^b=b;

  取反运算  ~(单目运算符)

  左移运算符 <<

将一个数的各二进制位全部向左移若干位

a = a<<2;(向左移2位)

高位左移后溢出,舍弃。

  右移运算符  >>

移到右端的低位被舍弃,对于无符号数,高位补0;

算术右移(补1)和逻辑右移(补0);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习入门

挑战程序竞赛系列(86):3.6极限情况(3)

挑战程序竞赛系列(86):3.6极限情况(3) 传送门:AOJ 2201: Immortal Jewels 翻译参考至hankcs: http://www....

241100
来自专栏HansBug's Lab

2431: [HAOI2009]逆序对数列

2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 954  Solv...

30660
来自专栏HansBug's Lab

3409: [Usaco2009 Oct]Barn Echoes 牛棚回声

3409: [Usaco2009 Oct]Barn Echoes 牛棚回声 Time Limit: 3 Sec  Memory Limit: 128 MB Su...

26070
来自专栏進无尽的文章

编码篇 - 正则表达式及其相关

有时我们需要在一大段长文本中过滤出我们需要的字段,或者检验该文本是否符合要求(该文本是否是邮箱,链接,电话号码或身份证),这时候就需要用到正则表达式了,当然我们...

13220
来自专栏Python攻城狮

Python数据科学(七)- 资料清理(Ⅱ)1.资料转换2.处理时间格式资料3.重塑资料4.学习正则表达式5.实例处理

注意:这里的时间转换后的格式可以根据需要设定,eg:dt.strftime('%Y/%m/%d')

14730
来自专栏mySoul

设计模式 里氏替换原则

在场景中,三毛需要什么枪支,就直接new 出一个枪支即可,然后其内通过抽象类获取到对象,然后对齐进行修饰

14660
来自专栏wannshan(javaer,RPC)

dubbo序列化过程源码分析

先看下dubbo在serialize层的类设计方案 序列化方案的入口,是接口Serialization的实现类。 /** * Serialization. ...

95490
来自专栏数据结构与算法

cf550C. Divisibility by Eight(结论)

设$x = 10000 * a_i + 1000 * a_{i - 1} + \dots$

9620
来自专栏增长技术

Swift-?-!

上面了解到的是普通值,接下来Optional值要上场了。Optional其实是个enum,里面有None 和Some两种类型。其实所谓的nil就是Optiona...

20130
来自专栏栗霖积跬步之旅

第十一章:使用数据处理函数

表:orders 字段:order_id order_name quantity item_price order_num order_date 1.函数: 用...

20550

扫码关注云+社区

领取腾讯云代金券