Visual C/C++에서 16비트 표현은 0x 로 합니다.
0xA024 는 16진수이죠.
이것은 표기상의 모양만 다를뿐 숫자의 크기 값은 같습니다.
즉
10진수로 12랑 16진수로 0x0C랑 같습니다.
그럼 왜 16진수 표기를 자주 사용할까요?
이것은 컴퓨터의 메모리 구조 때문에 그렇습니다.
컴퓨터는 2진수로 동작하는데요. 즉 0, 1 밖에 모릅니다. 이건 많이 들어보셨을 거예요.
때문에 메모리 구조가 2의 배수가 됩니다.
2, 4, 8, 16, 32, 64... ...
그래서 컴퓨터를 만든 사람들이 메모리에서 최소의 기억단위를 8비트 즉, 1바이트로 정했습니다.
때문에 변수를 기억시키기 위해서는 1바이트 이상을 사용하구요.
255이하의 숫자는 1바이트로 기억할 수 있지요. 그 이상의 숫자는 2바이트 3바이트 4바이트 ...
를 사용해야 겠죠.
이런 구조이다 보니까 10진수 보단 16진수에 더 친숙하게 되었답니다.
왜냐면 16진수로 0xFF가 255 거든요.
0x00 ~ 0xFF ===> 1바이트로 표현하는 종류
0x0000 ~ 0xFFFF ===> 2바이트로 표현하는 종류
16진수를 사요아면 딱딱 8비트(1바이트) 씩 단위가 맞게 떨어져서 사용하기가 좋죠.
만약 10진수로 한다면 -_-;;;
1바이트는 0 ~ 255
2바이트는 0 ~ 65535
보니까 단위가 영 아니죠? ^_^
어쨋든 그래서 16진수 표현을 많이 사용합니다.
2진수로 변환하기도 쉽구요(물론 사람이 눈으로 봐서 할때 얘기)
0xF 가 1111 이거든요
0001 0000 ==> 0x10 이구요
눈으로 다 보이죠. ^_^
근데 10진수로
45를 2진수로 표현하라고 하면 잘 안됩니다. 정말 계산 해야 해요.
그런데 16진수로 하면
45가 16진수로 0x23 이거든요.
0x23은 2진수로 0010 0011 이렇게 됩니다.
그냥 눈으로 보인답니다. 계산 안하고... ^_^
0000 ~ 1111 이 0x0 ~ 0xF 거든요.
그리고 키보드 코드는 임의로 정하시면 안됩니다.
키보드 아시키 코드값이랑 스캔코드 값이 정해져
있답니다.
때문에 임의로 바꾸면 제대로 안되겠죠.
출처: https://ideacoop.tistory.com/entry/펌-0x01에서-0x의-의미와-2-16진수-사용이유 [지식공장]