我正在解决一些关于codeforces的问题。通常我首先检查字符是大写还是小写英文字母,然后减去或添加 32
将其转换为相应的字母。但我发现有人做 ^= 32
做同样的事情。这里是:
char foo = 'a';
foo ^= 32;
char bar = 'A';
bar ^= 32;
cout << foo << ' ' << bar << '\n'; // foo is A, and bar is a
我已经为此搜索了一个解释,但没有找到。那么为什么这有效呢?
原文由 Devon 发布,翻译遵循 CC BY-SA 4.0 许可协议
让我们看一下二进制的ASCII码表。
而32是
0100000
这是小写字母和大写字母的唯一区别。因此,切换该位会切换字母的大小写。