C++布尔代数

C++ Boolean Algebra

本文关键字:布尔代数 C++      更新时间:2023-10-16

我已经将某个变量声明为布尔值,我希望当我进行一些布尔加法时C++会知道该怎么做,但它并没有按照我想要的方式发生。我如何让它工作。

#include<iostream>
using namespace std;
int main()
{
bool x,j;
x=0;
j=1;
for(int i=0;i<10;i++)
{
cout << x;
x=x+j;
}
return 0;
}

我得到的输出为

011111111

而我希望得到

0101010101

我希望布尔变量能修改 2。所以如果

x=1 then
x+1 = 0
x+1+1=1
x+1+1+1=0

等等。

我是否将布尔代数与以 2 为底的代数混淆了?

谢谢

bool x,j;
x=x+j;

此语句会自动将xj提升为在添加之前键入int。 然后赋值以通常的方式转换回bool0变成false,但任何其他数字,包括2,变成true

您可以通过改用^ (xor) 运算符来获取Z_2加法:

x = x^j;

C/C++提供了一系列按位运算符:&|^~,它们通常适用于布尔值,因为 true 转换为整数 1,false 转换为 0。

但您也可以使用真正的布尔运算符:

  • &&合相
  • ||析取
  • !=排他性的或(您认为是添加的内容)
  • !不是