前言:
目前姐妹们对“linux与c语言”大体比较看重,各位老铁们都需要知道一些“linux与c语言”的相关内容。那么小编同时在网上搜集了一些有关“linux与c语言””的相关内容,希望朋友们能喜欢,同学们一起来学习一下吧!按位与、或、异或运算符
在计算机内存中,数据是以二进制的形式存储,每一个位存放一个0或1的二进制数值。这里介绍的按位与、或、异或运算,就是针对二进制进行操作。
例如“按位与”运算,就是对二进制的数据位进行“与”运算。在数学中,定义了“与”运算的算术规则,使用符号“&”表示“与”运算。例如a & b这样的表达式,如果a和b对象都为1的时候,表达式的值才为1,只要a和b对象有一个值是0,则表达式的值是0。那么,我们可以归纳为如下表。
与运算规则表
操作数a的值
操作数b的值
与运算表达式
表达式的值
0
0
a & b
0
0
1
0
1
0
0
1
1
1
可以看到,对于 a&b这样的表达式,只要a和b中有一个值为0,则表达式的值就为0。只有a和b都是1的时候,表达式的结果才为1。
对于“或”运算的算术规则,使用符号“|”符号表示“或”运算。例如a | b这样的表达式,如果a和b对象都是0的时候,表达式的值才为0,只要a和b对象有一个值是1,则表达式的值就是1。那么,我们可以归纳为如下表。
或运算规则表
操作数a的值
操作数b的值
与运算表达式
表达式的值
0
0
a | b
0
0
1
1
1
0
1
1
1
1
可以看到,对于 a | b这样的表达式,只要a和b中有一个值为1,则表达式的值就为1。只有a和b都是0的时候,表达式的结果才为0。
对于“异或”运算的算术规则,使用符号“^”符号表示“异或”运算。例如a ^ b这样的表达式,如果a和b对象全部相同,即全部是0或者全部是1的时候,表达式的值才为0;只要a和b对象不相同,则表达式的值就是1。那么,我们可以归纳为如下表。
异或运算规则表
操作数a的值
操作数b的值
与运算表达式
表达式的值
0
0
a ^ b
0
0
1
1
1
0
1
1
1
0
可以看到,对于 a ^ b这样的表达式,只有a和b的值都是0或者都是1的时候,表达式的值就为0。如果a和b的值不相同,则表达式的结果为1。如下是测试的例子:
测试程序运行的结果如下:
通过测试例子,我们可以知道“按位与、或、异或”运算,就是把二进制数据,按位进行数学的“与、或、异或”操作。最终,表达式的值是按位运算的结果。
逻辑与、或运算符
在C语言中,定义了“逻辑与”和“逻辑或”的操作。逻辑与运算符是“&&”,可以有表达式“a && b”,那么,当a和b的值都是非0值的时候,表达式的值才为1;如果a和b的值中,有一个值为0,则表达式的值就是0。那么,我们可以归纳逻辑与的操作如下表。
逻辑与运算规则表
操作数a的值
操作数b的值
与运算表达式
表达式的值
0
0
a && b
0
0
非0
0
非0
0
0
非0
非0
1
可以看到,“逻辑与”的操作与“按位与”操作很相似。但是,“按位与”操作的是二进制中的一个位数据,而这里的“逻辑与”操作,操作的是一个数值,该操作数值只有0和非0(非0可以是正数和负数)这样的状态。
同理,“逻辑或”的操作与“按位或”的操作也很相似。“按位或”操作的是二进制中的一个位数据,“逻辑或”操作的是一个数值。操作数只有0和非0的 状态。我们可以归纳逻辑或的运算如下表。
逻辑或运算规则表
操作数a的值
操作数b的值
与运算表达式
表达式的值
0
0
a || b
0
0
非0
1
非0
0
1
非0
非0
1
可以看到,当a和b都是0值的时候,表达式的值才为0;如果a和b中有一个数为非0值,则表达式的值为1。如下测试的例子:
测试运行的结果如下:
可以看到,逻辑与和逻辑或运算符,可以操作变量,组成一个表达式。
标签: #linux与c语言