1

有人可以解释为什么对以 0x0030 作为操作数的二进制数进行 OR 运算会产生该数字的 ASCII 字符吗?

4

3 回答 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 回答