c - 有没有办法对 c 中整数的所有位进行 AND 运算并返回简单的 1 或 0?

标签 c

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

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

最佳答案

如果对一个单词的所有位进行与运算,则只有“全一”会产生结果 1。在您的示例中,0b10101010 将产生零而不是一。

如果您对所有位进行“或”运算,任何非零值都将得到 1。

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

int i = somevalue;

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

或者也许更直观:

int and_bits = i == ~0 ;

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

相关文章:

C 错误无法将参数 1 从 int * 转换为 int

c - 从 C 获取适用于 MIPS 处理器的 ASM 代码

2台服务器之间的通信(C语言)

html - 我应该在哪里安装 webkit 的插件?

c - TCP 套接字在循环中途停止写入

c - 指向函数内部定义的常量字符串的全局字符指针

c - 将信号量与 POSIX 共享内存一起使用时出现段错误

c - 使用 gold vs ld 链接器时使用的 glibc/pthreads 的不同符号

c - while 循环不以 '\0' 终止

c - 有没有办法在循环中打印结构成员而无需在 C 中命名每个成员?