C++ 十进制奇偶校验
我想在循环中使用奇偶校验函数来生成每秒发生一次的事件。但是我发现所有监视奇偶校验的函数都不起作用 即使是最简单的,比如:C++ 十进制奇偶校验,c++,function,loops,parity,C++,Function,Loops,Parity,我想在循环中使用奇偶校验函数来生成每秒发生一次的事件。但是我发现所有监视奇偶校验的函数都不起作用 即使是最简单的,比如: unsigned int v; bool parity = false; while (v) { parity = !parity; v = v & (v - 1); } 可以给我一个奇数和偶数的相同值 如何做好?或者,有没有其他方法可以让循环中的每一轮都发生一次事件?试试以下方法: bool isEven = ((v % 2) == 0
unsigned int v;
bool parity = false;
while (v)
{
parity = !parity;
v = v & (v - 1);
}
可以给我一个奇数和偶数的相同值
如何做好?或者,有没有其他方法可以让循环中的每一轮都发生一次事件?试试以下方法:
bool isEven = ((v % 2) == 0);
这假设v是要测试均匀性的变量。这是 试试这个:
bool isEven = ((v % 2) == 0);
这假设v是要测试均匀性的变量。这是 你似乎误解了奇偶校验的含义,因为它通常在计算机世界中使用。如果v的二进制表示具有偶数个设置位,那么您显示的代码将奇偶校验设置为false,如果具有奇数个设置位,则将奇偶校验设置为true。奇偶性的概念与v本身是偶数还是奇数无关。一些例子:
Number (base 10) Number (base 2) Parity
0 0 0
1 1 1
2 10 1
3 11 0
4 100 1
5 101 0
6 110 0
7 111 1
. . .
. . .
. . .
12498741 1101 1110 1101 0111 0011 0101 0
. . .
. . .
. . .
如果确实要检查某个数字是偶数还是奇数,可以使用:
bool odd = v & 1;
bool even = !(v & 1);
这相当于@user1118321答案中使用的%表达式。您似乎误解了奇偶校验的含义,因为它通常在计算机世界中使用。如果v的二进制表示具有偶数个设置位,那么您显示的代码将奇偶校验设置为false,如果具有奇数个设置位,则将奇偶校验设置为true。奇偶性的概念与v本身是偶数还是奇数无关。一些例子:
Number (base 10) Number (base 2) Parity
0 0 0
1 1 1
2 10 1
3 11 0
4 100 1
5 101 0
6 110 0
7 111 1
. . .
. . .
. . .
12498741 1101 1110 1101 0111 0011 0101 0
. . .
. . .
. . .
如果确实要检查某个数字是偶数还是奇数,可以使用:
bool odd = v & 1;
bool even = !(v & 1);
这相当于@user1118321答案中使用的%表达式。一般来说,为什么偶数和奇数不应该具有相同的奇偶校验?如果v中设置了奇数位数,则您发布的循环将奇偶校验设置为true-如果v为奇数,则不会。一般来说,为什么,偶数和奇数是否应该具有相同的奇偶校验?如果在v中设置了奇数位数,则您发布的循环将奇偶校验设置为true-如果v是奇数,则不会设置为true。@ZoltánSchmidt太棒了!我看你是新来的。通常,如果答案解决了您的问题,建议您勾选旁边的绿色复选标记。但是别担心!如果有更好的答案出现,你可以稍后改变主意,选择不同的答案!是的,我是新来的,但我很高兴我能很快得到答案。@ZoltánSchmidt太棒了!我看你是新来的。通常,如果答案解决了您的问题,建议您勾选旁边的绿色复选标记。但是别担心!如果有更好的答案出现,你可以稍后改变主意,选择不同的答案!是的,我是新来的,但我很高兴我能很快得到答案。哦,真的。我不知道。哦,真的。我不知道。