是否可以对C中整数的所有位执行按位运算或逻辑运算,并返回1或0

例如包含0b10101010的整数将返回1,0b00000000将返回0。

最佳答案

如果将一个单词的所有位相加,则“全1”的结果将为1。在您的示例中,0b10101010将产生零而不是一个。

相反,如果您对所有位进行或运算,则任何非零值都将导致1。

因此,以下内容对于任何整数类型都是类型安全的,而无需假设二进制补码:

int i = somevalue;

int and_bits = ~i == 0 ;
int or_bits = i != 0 ;


或更直观地说:

int and_bits = i == ~0 ;

关于c - 有没有一种方法可以对c中一个整数的所有位进行“与”运算,然后返回简单的1或0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12359951/

10-11 15:21