부제 : 데_이_터_랩 너는 왜 나에게 이런 시련을 주는가 (검색을 피하기 위한 노력)
겟바이트를 하며 공부하게 되었다
1. 16진수 표현
보통 C에서는 16진수를 0x로 표현한다
ex) 15 = 0xf
16 = 0x10
10 = 0xa
2. 바이트와 비트의 관계
(매일 헷갈리다가 이제야 정리, 반성하자)
위 그림에서 보이듯이,
8bits = 1byte
8비트가 모여야, 1바이트가 된다
3. c에서의 표현
만약 c에서
0x80이라고 표현된다면 이 수는 1000 0000이다
0x80 == 1000 0000
0xff == 1111 1111
그래서 0x80000000에서 80이라는 바이트를 뽑아내고 싶다면
1) 1000 0000 0000 0000 0000 0000 0000 0000 == 0x80000000
2) 0x80000000 >> 3*8
3) 1111 1111 1111 1111 1111 1111 1000 0000 이 된다
4) 0000 0000 0000 0000 0000 0000 1111 1111 과 &연산을 하면 된다
한 자리에 4비트를 가진다고 생각하면 쉽다
4. 왜 0x?
숫자가 16진수임을 나타내는 접두어
C언어는 이를 사용하여 컴파일러에게 "16진수니까 잘 처리해"라고 말하는 것
참고로 0b는 2진수, 0x는 16진수를 표현한다는 의미이다
16진수를 의미하는 단어, hex => x
5. 16진수를 사용하는 이유
16진수 자릿수 하나가 2^4를 표현할 수 있기 때문
특히 컴퓨터에서는, 자릿수 2개를 사용하면 2^8을 표현할 수 있는데,
2^8은 곧 1바이트의 값을 표현할 수 있다
간단히 1바이트 값을 2진법을 사용해서 0101 1111 식으로 표시할 게 아니라 그냥 16진법으로 5F라고 표기하면 쉽다
'System' 카테고리의 다른 글
Assembly [1] (var, add, print) (0) | 2019.10.13 |
---|---|
ㅂ ㅏ ㅁ ㄹ ㅐ ㅂ 0+1 (0) | 2019.10.08 |
리눅스 권한3 (보충) (0) | 2019.10.01 |
sudo와 root (0) | 2019.09.28 |
리눅스 권한 2 (0) | 2019.09.26 |