为什么对任何带有空格字符的字母进行异或操作会改变字母的大小写,这是有历史原因的吗?(例如,'a‘xor’‘= 'A','F’xor‘’= 'f',等等)
或者这只是一个巧合?
(假设字符是ASCII或unicode编码的。)
发布于 2012-03-12 08:47:36
我确信这是经过深思熟虑的,可以通过改变一个比特来改变情况-这将使早期的软件更有效率。空格字符是#32这一事实无关紧要。
发布于 2012-03-12 08:54:58
优点
ASCII是机电式电传打字机所使用的代码的子码,通常被称为电传打字机。
这些机器没有活动的电子设备..。他们使用鼓、马达和凸轮以及大约无数的金属部件来打印大写字符。他们有一些RLC组件和各种继电器。
只用一位来分隔大小写字符,这是非常刻意的。这样,传输和存储系统可以使用6位而不是7位。
实际上,您不需要XOR,您可以使用OR或ADD来获得小写范围。
通过简单地忽略一位,一个只能打印大写字母的设备就能够处理混合大小写输入。在空格字符中使用这一位是有意义的…这是在类型元素选择方面通常被忽略的一点。
发布于 2012-03-12 13:52:27
这只是ASCII字母和以类似方式分配的其他字母集的一个特征。对于Unicode中的绝大多数字母字符来说,这是不会发生的。例如,U+0101是U+0100,ā是U+0101。通常,小写和大写字母通常被分配给连续的代码位置。而且Unicode中的大多数字母字符都没有小写/大写概念。
https://stackoverflow.com/questions/9660401
复制相似问题