16 진수가 접두사로 붙는 이유는 무엇 0x
입니까? 접두사의 사용법을 이해하지만 왜 0x
선택된 이유의 중요성을 이해하지 못합니다 .
16 진수가 접두사로 붙는 이유는 무엇 0x
입니까? 접두사의 사용법을 이해하지만 왜 0x
선택된 이유의 중요성을 이해하지 못합니다 .
답변:
짧은 이야기 : (가) 0
는 상수 (그리고 식별자 / 예약 된 단어)를 다루는 것 파서를 알려줍니다. 수 기준을 지정하려면 무언가가 여전히 필요합니다 x
. 임의 선택입니다.
긴 이야기 : 60 년대에 널리 사용 된 프로그래밍 수 시스템은 10 진수 및 8 진수입니다 . 메인 프레임은 바이트 당 12, 24 또는 36 비트를 가졌으며 이는 3 = log2 (8)로 나눌 수 있습니다.
BCPL 언어 8 1234
는 8 진수 의 구문 을 사용했습니다 . Ken Thompson은 BCPL에서 B를 만들 때 0
대신 접두사를 사용했습니다. 이것은 대단하기 때문에
0
두 기지에서 동일합니다).00005 == 05
)이며#123
).C가 B에서 만들어 졌을 때 16 진수가 필요 해졌고 (PDP-11에는 16 비트 단어가 있음) 위의 모든 사항이 여전히 유효했습니다. 다른 기계에는 8 진수가 여전히 필요했기 때문에 0x
임의로 선택되었습니다 ( 00
아마도 어색한 것으로 간주).
C #은 C의 자손이므로 구문을 상속합니다.
0x
이상 00
이 선호 / 어색함 이라고 생각하지 않습니다 . 00
기존 코드를 깨뜨릴 수 있습니다. 0010
진수이기 때문에 8
, 상태를 0010
16 진수는 것 같은 16
. 그들은 숫자를 두 번째 숫자 표시기로 사용할 수 없었습니다 ( 8
또는 제외하고 9
16 진수와 관련된 의미를 갖지 않습니다). 그리고 그 잎 하나 0h
또는 0x
( H 전자 X idecimal). 이 시점에서 그것은 다시 선호로 돌아온 것 같습니다.
0
8 진수 로 접두사를 사용 하면 수년 동안 매우 많은 문제가 발생했습니다. 특히 전화 번호가로 시작하는 영국과 같은 국가에서는 0
. 자바 스크립트와 다른 많은 언어들은 이것을 8 진수로 파싱하여 저장하기 전에 숫자를 조정합니다. 재미에 추가하려면, 하나 개의 인기있는 데이터베이스 제품은 것이다 자동으로 숫자가 포함 된 경우 소수점 파싱로 전환 8
하거나 9
.
참고 : 나는 정답을 모르지만 아래는 내 개인적인 추측입니다!
앞에서 언급했듯이 숫자가 0이면 8 진수를 의미합니다.
04524 // octal, leading 0
16 진수를 나타내는 시스템이 필요하다고 가정하고 C 스타일 환경에서 작업하고 있음을 참고하십시오. h와 같은 어셈블리로 끝나는 것은 어떻습니까? 불행히도 할 수는 없습니다-유효한 식별자 인 토큰을 만들 수 있습니다 (예 : 변수 이름을 같은 것으로 지정할 수 있음).
8000h // hex
FF00h // oops - valid identifier! Hex or a variable or type named FF00h?
같은 이유로 캐릭터를 이끌 수 없습니다.
xFF00 // also valid identifier
전처리 기와 충돌하기 때문에 해시를 사용했을 수 있습니다.
#define ...
#FF00 // invalid preprocessor token?
결국, 어떤 이유로 든 그들은 선행 0 뒤에 x를 두어 16 진을 표시하기로 결정했습니다. 여전히 숫자 문자로 시작하기 때문에 모호하지 않으므로 유효한 식별자가 될 수 없으며 아마도 선행 0의 8 진 규칙을 기반으로합니다.
0xFF00 // definitely not an identifier!
0xFFAB1234
로 작성해야합니다 0FFAB1234h
. 어렸을 때 파스칼의 인라인 asm에서 기억합니다. stackoverflow.com/q/11733731/995714
숫자가 다른 기본이 아닌 16 진수임을 나타내는 접두어입니다. C 프로그래밍 언어는이를 사용하여 컴파일러에 알립니다.
예:
0x6400
로 변환 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.
컴파일러는 읽을 때 0x6400
, 그것은 수의 도움으로 16 진수 이해 0X 용어. 보통 우리는 (6400) 16 또는 (6400) 8 또는 무엇이든 이해할 수 있습니다 .
들어 진 이 될 것이다 :
0b00000001
어떤 식 으로든 도움이 되었기를 바랍니다.
좋은 날!
x6400
습니까? 은 x
여전히 진수를 추론하는 데 사용할 수 있습니다.
앞의 0은 밑 2, 8 또는 16의 숫자를 나타내는 데 사용됩니다.
내 생각에, 'x'는 16 진처럼 들리므로 16 진을 나타 내기 위해 0x가 선택되었습니다.
단지 내 의견이지만, 나는 그것이 의미가 있다고 생각합니다.
좋은 날!