关于位异或运算符的疑问:为何可用于十进制数而非仅二进制?
为什么异或运算符能直接用在十进制数上?
这个问题其实戳中了很多新手容易混淆的点——人类习惯的数字表示方式和计算机实际存储、运算的底层逻辑完全是两码事!
我给你拆解一下:
- 首先,异或确实是针对二进制位的运算,但计算机里所有整数(包括
ord()返回的ASCII码值)在内存里都是以二进制形式存储的,十进制只是给人类看的“友好展示格式”而已。 - 当你用十进制数做异或运算时,编程语言会自动帮你完成「十进制→二进制」的转换,执行位运算后,再把结果转回十进制输出,整个过程完全不需要你手动干预。
拿Python举个直观的例子:
# ord('a') 返回十进制97,它的二进制本质是 0b01100001 # 我们用它和十进制32(二进制0b00100000)做异或 xor_result = ord('a') ^ 32 print(xor_result) # 输出65(十进制),对应二进制0b01000001 print(chr(xor_result)) # 输出'A',验证结果正确
你看,我们全程用的都是十进制数,但底层其实是二进制位在做异或操作——把两个数的对应位进行「相同为0,不同为1」的计算,最后再转成十进制给你看。
不止异或,所有位运算符(比如与&、或|、取反~、移位<</>>)都是这个逻辑:不管你输入的是十进制、八进制还是十六进制,最终都会统一转换成二进制进行位操作,结果再以默认的十进制格式返回。
内容的提问来源于stack exchange,提问作者user3782573
相关产品推荐
相关产品推荐

