2012-10-15 3 views
1

피연산자로 0x0030 인 이진수에 대해 OR 연산을 수행하면 그 수의 ASCII 문자가 생성되는 이유를 설명 할 수 있습니까?어셈블리에서 숫자를 ASCII로 변환

+0

나는 0x0030을 빼는 이유가 무엇인지 알고 있습니다. – Zzz

답변

4

ASCII 차트에서 보는 바와 같이 0에서 9까지의 숫자는 0x30부터 시작합니다. 그래서 문자 1의 ASCII 값을 원하십니까? 수에 대한 0x30에가 또는 0x01로 = 0x31로 회신 = ASCII 값은 1

In binary it's easy to see: 

(0x30) 110000 
or 
(0x01) 000001 
=  110001 

Which is 0x31 - ASCII value of 1. 

enter image description here

+1

이렇게하면 0에서 9까지만 작동합니다. – Zzz

+0

신호 숫자를 ASCII 값으로 변환하는 컨텍스트에서 확실히 가장 의미가 있습니다. – Chimera

1

는 9 숫자 0을 참조하는 경우, 그 이유는 0x30 (또는 48)의 ASCII 코드이다 48은 바이트의 상위 (왼손)쪽에있는 비트만을 필요로하기 때문에 16 (하위 비트) 이하의 임의의 숫자로 OR 연산을하는 것은 수학적으로 숫자를 더하는 것과 같습니다.

따라서 0x30 또는 0x01은 문자 '1'의 ASCII 코드 0x31을 제공합니다.

1

한 자리 숫자의 이진 표현을 봅니다. 2d = 00000010b. 0x30 (00110000b)의 OR 연산을 적용하십시오. 이 결과는 00110010b가 0x32 또는 50d가되어 '2'에 대한 ASCII 코드입니다. 사실,이 경우 (고려할 캐리가 없으므로) OR 연산은 0x30을 더하는 것과 같습니다.