在C中,假设我有一个无符号字符A,它可以是0或1。我希望找到一个按位逻辑运算符,将A转换为!A。
注意:我在GPU上使用这段代码,与逻辑运算符相比,按位运算符非常便宜。也就是说,XOR比!
发布于 2015-01-17 22:01:33
如果“不”意味着发送1到0和0到1。你可以使用异或运算符^来做这件事。如果字符被称为c,则可以编写c = c ^ 1;。
发布于 2015-01-17 22:12:01
您应该使用“逻辑not”运算符:
A = !A;
您也可以使用“but not”运算符,但这将使您的代码更难理解,因为您所做的实际上是一个逻辑not:
A = ~A;
发布于 2015-01-17 22:59:42
如果你只需要重复切换一个标志,那么使用1进行异或运算是很方便的。
$ clang -x c -include stdio.h -pipe -o meh - <<\EOF && ./meh
int main(int argc, char **argv) {
unsigned char x = '\0';
for (int n = 0; n <= 50; n++) printf("%d", x ^= 1);
return 0;
}
EOF
101010101010101010101010101010101010101010101010101https://stackoverflow.com/questions/28000212
复制相似问题