一起talk C栗子吧(第十九回:C语言实例--位操作)

各位看官们,大家好,上一回中咱们说的是输出十六进制的例子,这一回咱们说的例子是:位操作。闲话

休提,言归正转。让我们一起talk C栗子吧!

看官们,位操作有五种,与、或、非、异或、移位。接下来咱们分别介绍这些操作。为了方便说明,我们

先统一做一下说明,位操作的对象是比特位。假如有三个比特位:A、B和C,大家都知道比特位的值只有0

或者1两种,所以A、B和C的值是0或者1.我们把A和B当作位操作的对象,C当作A和B操作的结果。

与操作:操作符为&。例子:C=A & B.只有A和B的值都为1时,C的值才为1.其它情况时,C的值为0。

或操作:操作符为|。例子:C=A | B.只要A和B中有一个值为1时,C的值就为1.其它情况时,C的值为0。

非操作:操作符为~。例子:C=~A.如果A的值为1时,C的值才为0.反之,C的值为1。

异或操作:操作符为^。例子:C=A ^ B.只有A和B的值不相同时,C的值才为1.其它情况时,C的值为0。

移位操作:分为右移位和左移位两种。操作符为>>和<<。向左移位的话,右边空缺出来的位会补为0.向右

移位时有两种不同情况:算术移位和逻辑移位。使用算术移位时左边空缺出来的位会除去最高位操持不变

外,其它空缺位补为0.使用逻辑移位时,左边空缺出来的位被补为0.一般情况下,编译器都是使用算术移位,

其实对于无符号数来说,不论是算术移位还是逻辑移位,他们的操作结果都一样。对于有符号数来说,要

不一样了,因为有符号的数的最高位是用来表示符号的,特别是有符号数中的负数,它们的最高们是1.因

此使用右移位操作时要注意一下移位对象。另外,左称位操作相当于乘以2,右移位操作相当于除以2.当然

移动的位数不能超过变量拥有的最大的位数。因为移位操作的效率高,所以它可以取代乘除法。

看官们,我们说了这么多位操作,到底有什么用途?看官莫急,通过位操作,可以取出某个位串中的一部

分位,也可以对位串的某些位置置0和1.常见的做法是,首先定义一个掩码,通过掩码来对原来的位串进行

操作,比如取出A中的4和5位的值,C=(A&00011000)>>3。

看官们,位操作中的与或操作容易与逻辑运算中的与或运算混淆。我在这里给大家作一下说明:

从“外表”上来看,它们是不同的:与操作使用&而与运算使用&&。或操作使用|而与运算使用||,与或操作

的运算符和与或运算的操作符明显不一样。

从“内心”上来看,它们也是不同的:与或操作是对变量存储单元中的位进行操作,操作的结果就是新的变量。

与或运算是对变量或表达式的进行真假判断,它的结果要么是真,要么是假。大家可以是“外表”和“内心”来区

分与或操作和与或运算。

各位看官,关于位操作例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 19:08:25

一起talk C栗子吧(第十九回:C语言实例--位操作)的相关文章

一起talk C栗子吧(第一百五十九回:C语言实例--基于AF_INET域的数据报套接字通信)

各位看官们,大家好,上一回中咱们说的是基于AF_INET域的流套接字通信的例子,这一回咱们说的例子是:基于AF_INET域的数据报套接字通信 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中一起制作了我们的第三道佳肴是:基于AF_INET域的流套接字通信.今天,我将和大家一起制作第四道佳肴:基于AF_INET域的数据报套接字通信. 制作第四道佳肴的菜谱:数据报套接字过程. 制作第四道佳肴的食材:数据报套接字的接口,套接字属性,套接字地址信息. 看官们,以上的内容,我们

一起talk C栗子吧(第一百六十九回:C语言实例--再谈内置宏)

各位看官们,大家好,上一回中咱们说的是C语言中的布尔–bool类型的例子,这一回咱们说的例子是:再谈内置宏 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在第一百二十四回中介绍了C语言中的内置宏,当时介绍了常用的内置宏_LINE_和_FILE_.并且介绍了如何使用它们来输出它们所在位置的行号和所在的文件名.大家都知道,这两个内置宏经常被用来在文件中添加调试信息.因为我们写的程序难免会有错误,所以需要对程序进行调试.在文件中加入内置宏后,我们通过调试可以快速地找到错误发生在哪个

一起talk C栗子吧(第十二回:C语言实例--单链表一)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们,上一回中咱们没有说具体的例子,而且是说了例子中的文件组织结构.这一回咱们继续说C例子, 说的例子是链表,更准确的说法叫作单链表.咱们不但要说C例子,而且会在例子中使用上一回中说过的 文件组织结构,就当作是举例说明文件组织结构的使用方法. 有点一石二鸟的感觉,哈哈. 链表定义 看官们,所谓的链表其实就是一组元素通过一定的方式链接在一起.比如我们坐的火车

一起talk C栗子吧(第二回:C语言实例--判断闰年)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C语言实例吧! 看官们,上一回中咱们给小说做了个开头,这一回咱们正式说C例子,这回说的例子是:判断闰年. 看官们,闰年是什么?这个是地理天文方面的概念.如果不明白的话,自己百度去,哈哈.我也偷一把懒. 看官们,判断闰年的方法有两种: 如果某年能被4整除,但是不能被100整除,那么这一年就是闰年. 如果某年能被400整除,那么这一年就是闰年. 看官们看到整除肯定想到除法了

一起talk C栗子吧(第一百七十九回:C语言实例--字符和字符串输出函数二)

各位看官们,大家好,上一回中咱们说的是字符和字符串输出函数的例子,这一回咱们继续说该例子.闲 话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中介绍了字符和字符串输出函数的用法,満篇都是理论,古语云:纸上得来终觉浅,绝知此事要躬行.这一回中我们要把这些纸上得来理论应用于实践中,让我们一起动手去实践吧. 接下来,我们将通过具体的代码来说明如何使用字符输出函数,以及使用时的注意事项: int main() { char ch = 'a'; char *str = "hello

一起talk C栗子吧(第一百一十九回:C语言实例--线程死锁三)

各位看官们.大家好,上一回中咱们说的是线程死锁的样例,这一回咱们继续说该样例.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,由于篇幅的原因我们在上一回仅仅介绍了死锁发生的第一种原因,今天我们将介绍死锁发生的另外一种原因,而且该原因中的伪代码转换为实际的C语言代码. 为了方便,我们使用前面章回中演示相互排斥量的代码,在该代码的基础上做一些小改动来演示死锁.代码例如以下: 首先定义两个相互排斥量,相互排斥量是全局变量.方便线程使用. #if MUTEX_ENABLE pthread_m

一起talk C栗子吧(第二十九回:C语言实例--选择排序)

各位看官们,大家好,上一回中咱们说的是希尔排序的例子,这一回咱们说的例子是:选择排序.闲话休 提,言归正转.让我们一起talk C栗子吧! 选择排序的原理是:从容器中选择一个最大或者最小的元素,把该元素放到新的容器中,等到容器中的所 有元素都被选择完后,新容器中存放的元素就是有序的. 在实现选择排序时,我通过交换元素的位置,充分利用了容器的空间,而没有创建新的容器,这样可以节 省程序的存储空间.选择排序的实现步骤如下: 1.先实现一个可以从容器中找到最大元素或最小元素的函数,找到后返回该元素在容

一起talk C栗子吧(第一百四十九回:C语言实例--socket通信三)

各位看官们,大家好,上一回中咱们说的是socket通信的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中介绍了socket通信的步骤,当时提到了实现这些步骤使用的系统调用,当时有些看官不理解这些系统调用,今天我们趁热打铁来介绍这些系统调用. int socket(int domain, int type, int protocol) 该函数用来创建一个socket; 该函数的三个参数分别对应socket的三个属性:域,类型和协议: 该函数运

一起talk C栗子吧(第一百六十二回:C语言实例--套接字知识体系图)

各位看官们,大家好,上一回中咱们说的是套接字通信模型的例子,这一回咱们说的例子是:套接字知识体系图.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们, 我们在前面的章回中介绍了许多关于套接字的内容,有些看官感觉知识比较乱,不断地摇头叹气,而且还在吟诗:剪不断,理还乱,是离愁.不对,是套接字.别有一番滋味在心头.哈哈.这位看官太有才了呀,连古诗也用上了.今天我和大家一起整理下套接字的知识,到时候将会是一番喜悦的滋味在心头. 看官们,我们最开始介绍的是套接字的概念,接着介绍了套接字的属性,