1

オペランドとして 0x0030 を使用して 2 進数で 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はバイトの上位(左側)側のビットのみを必要とするため、任意の数字とOR演算します。 16未満(下位ビット)は、数学的に数値を加算するのと同じです。

したがって、0x30または0x01は、0x31、文字「1」のASCIIコードなどを提供します。

于 2012-10-15T20:13:47.457 に答える
1

1桁の2進表現を見てください。例:2d=00000010b。0x30(00110000b)のOR演算を適用します。これにより、0x32である00110010bまたは「2」のASCIIコードである50dになります。事実上、この場合(考慮すべきキャリーがないため)、OR演算は0x30を加算することになります。

于 2012-10-15T20:14:00.300 に答える