有人可以解释为什么对以 0x0030 作为操作数的二进制数进行 OR 运算会产生该数字的 ASCII 字符吗?
问问题
26068 次
3 回答
6
因为查看 ASCII 图表,数字 0 到 9 从 0x30 开始。所以你想要字符 1 的 ASCII 值吗?0x30 或 0x01 = 0x31 = 数字 1 的 ASCII 值。
In binary it's easy to see:
(0x30) 110000
or
(0x01) 000001
= 110001
Which is 0x31 - ASCII value of 1.
于 2012-10-15T20:13:33.397 回答
2
如果您指的是数字 0 到 9,原因是0x30
(或 48)是数字 0 的 ASCII 码。由于 48 只需要字节的高位(左侧)位,因此将其与任何数字进行或运算低于 16(低位)与数学上添加数字相同。
所以 0x30 OR 0x01 将给出 0x31,即字符 '1' 的 ASCII 码,依此类推。
于 2012-10-15T20:13:47.457 回答
1
查看单个数字的二进制表示:例如 2d = 00000010b。对其应用 0x30 (00110000b) 的 OR 操作。这导致 00110010b 是 0x32 或 50d,这是 '2' 的 ASCII 码。实际上,在这种情况下(因为没有要考虑的进位)OR 操作等于添加 0x30。
于 2012-10-15T20:14:00.300 回答