C++ Tutorials: Boolean Operations

发布于:2022-12-13 ⋅ 阅读:(594) ⋅ 点赞:(0)

C++官网参考链接Boolean Operations - C++ Tutorials (cplusplus.com)

布尔操作 
是我们可以想象的最小信息量,因为它只存储值10,代表是或否、激活或失效、真(true)或假(false),等等……也就是说:两种可能的状态,每一种都相对于另一种,没有任何阴影的可能性。我们将考虑一个位的两个可能值是0和1。
一些操作可以与位一起执行,或者与其他位一起执行,或者单独执行。这些操作被称为布尔操作,这个词来自于一位对该领域贡献较大的数学家的名字:乔治·布尔(1815-1864)
所有这些操作都有既定的行为,它们都可以应用到任何位上,无论它们包含哪个值(0或1)。接下来,你有一个基本布尔操作的列表,以及一个包含该操作行为的表,其中包含所有可能的位组合

按位与
这个操作在两个位之间执行,我们将称之为a按位与b(a&b)。如果a和b都等于1,应用这个按位与操作的结果是1,在所有其他情况下(即,如果一个变量或两个变量都是0),结果是0。

按位与(&)

a b a&b
0 0 0
0 1 0
1 0 0
1 1 1

按位或
该操作在两个位(a和b)之间执行。如果两个位中有一个为1,或者两个都为1,则结果为1。如果没有一个等于1,则结果为0。

按位或(|)

a b a|b
0 0 0
0 1 1
1 0 1
1 1

1

按位异或
该操作在两个位(a和b)之间执行。如果两个位中有一个为1,则结果为1,但如果两个都为1,则结果不为1。如果它们都不等于1或都等于1,则结果为0。

按位异或(^)

a b a^b
0 0 0
0 1 1
1 0 1
1 1 0

按位非
该操作是在单个位上执行的。它的结果是位的实际值的反转:如果它被设置为1,它就变成0,如果它是0,它就变成1:

按位非(~)

a ~a
0 1
1 0

这是4个基本的布尔操作(按位与、按位或、按位异或和按位非)。结合这些操作,我们可以从两个位中得到任何可能的结果。
C++中,这些操作符可用于任何整数数据类型的变量;布尔操作是对每个相关变量的所有位执行的。例如,假设有两个变量:a和b,都是unsigned char类型,其中a包含195(二进制中的11000011),b包含87(二进制中的01010111)。如果我们写以下代码:
unsigned char a=195;
unsigned char b=87;
unsigned char c;
c=a&b;
这意味着,我们在a和b之间进行了一个按位与操作。该操作在位于相同位置的两个变量的位之间执行:c的最右边的位将包含在a和b的最右边的位之间进行按位与(&)操作的结果:

 同样的操作也在两个变量的第二个位和第三个位之间执行,以此类推,直到在两个变量的所有位之间执行该操作(每个位只使用另一个变量的相同位)。
c的最终二进制值是01000011,即十进制67。195&87=67。  

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到