首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按位运算符将0转换为1,将1转换为0

按位运算符将0转换为1,将1转换为0
EN

Stack Overflow用户
提问于 2015-01-17 21:59:32
回答 3查看 9.6K关注 0票数 3

在C中,假设我有一个无符号字符A,它可以是0或1。我希望找到一个按位逻辑运算符,将A转换为!A。

注意:我在GPU上使用这段代码,与逻辑运算符相比,按位运算符非常便宜。也就是说,XOR比!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-17 22:01:33

如果“不”意味着发送1到0和0到1。你可以使用异或运算符^来做这件事。如果字符被称为c,则可以编写c = c ^ 1;

票数 13
EN

Stack Overflow用户

发布于 2015-01-17 22:12:01

您应该使用“逻辑not”运算符:

A = !A;

您也可以使用“but not”运算符,但这将使您的代码更难理解,因为您所做的实际上是一个逻辑not:

A = ~A;

票数 6
EN

Stack Overflow用户

发布于 2015-01-17 22:59:42

如果你只需要重复切换一个标志,那么使用1进行异或运算是很方便的。

代码语言:javascript
复制
$ 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

101010101010101010101010101010101010101010101010101
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28000212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档