我正在解决 codeforces 上的一些问题。通常我首先检查字符是大写还是小写英文字母,然后减去或添加32
将其转换为相应的字母。但我发现有人这么做^= 32
做同样的事情。这里是:
char foo = 'a';
foo ^= 32;
char bar = 'A';
bar ^= 32;
cout << foo << ' ' << bar << '\n'; // foo is A, and bar is a
我已经为此寻找过解释,但没有找到。那么为什么这有效呢?
我们来看一下二进制的 ASCII 码表。
A 1000001 a 1100001
B 1000010 b 1100010
C 1000011 c 1100011
...
Z 1011010 z 1111010
32 是0100000
这是小写字母和大写字母之间的唯一区别。因此,切换该位会切换字母的大小写。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)