Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

살아가면서 내가 알게 된 것들

Byte 계산 본문

SW Programming/Embedded

Byte 계산

Mr.공 2023. 8. 2. 18:38

임베디드 관련 작업을 하다보면 hex값으로 byte계산을 많이 하게 된다.

그래서 이 글을 써본다.

 

1byte와 16진수 관계

  1. 1byte는 8bit이다.
    1bit에는 0과 1만 들어갈 수 있다.
    따라서 8bit는 00000000 ~ 11111111 범위가 된다.

  2. 16진수를 적을 때 기존 10진수와 구분하기 위해 0x를 앞에 붙인다.
    예를들어 0x1 은 16진수로 1(일)을 뜻한다. 0x10 이라면 16진수로 10(십)을 뜻한다.

  3. 16진수를 사용한다면 2진수를 조금 더 보기 편하게 해준다.
    16진수 20(이십, 0x20)은 10진수로 32(삽십이)이고 이것은 2진수로 100000(일영영영영영) 이다.
    100000을 4개씩 끊어보면 10 0000 이라고 쓸 수 있다.
    즉, 0x20 = 10 0000 이다.
    이로서 16진수의 한자리는 2진수의 4자리(4bit)와 같다로 볼 수 있다.
    그리고 1byte는 8bit 이므로 2진수 8자리이고 이는 0x01와 같이 16진수로 2자리로 표현된다.

  4. 위 내용을 종합해 볼 때 8bit는 1 byte이고 16진수로 두자리 수 01(0x01)은 8bit를 의미하므로
    0x01 차이 난다는 의미는 1byte가 차이 난다는 의미이다.
    예를들어 0x01과 0x03은 2byte가 차이 난다는 뜻이다.

KB(킬로바이트), MB(메가바이트), GB(기가바이트), TB(테라바이트)

10진수에서는 K(킬로) -> M(메가) -> G(기가) -> T(테라) 순으로 증가시 1000(10의 3승) 단위로 증가한다.

즉, 1K = 1,000 이고 1M = 1,000 * 1,000 = 1,000 ,000이다.

 

하지만 컴퓨터는 0과 1로만 이뤄져 있기 때문에 2의 지수승(2진수)을 쓴다.

따라서 1KByte 에서 1MByte로 갈때 1000대신 1000에 가장 가까운 1024(2의 10승) 값을 사용한다.

1000 보다 1024가 컴퓨터 입장에선 더욱 깔끔하게 떨어지는 값이기 때문이다.

따라서 컴퓨터에서는 1K = 1024 이고 1M = 1024*1024 = 1,048,576 이다.

1024는 봐줄만 한데 1,048,576은 외우기가 어렵다.

그래서 사람들은 byte를 표현할때 쓰는 hex(16진수) 표현을 사용한다.

1024는 0x400이다.

따라서 1KB = 0x400 이된다.

만약 16KB라면 16(십진수) x 0x400(16진수) 이라고 할 수 있고 이는 0x10 x 0x400 이므로 0x4000 이 16KB이다.

실제로 계산기를 뚜드려 보면 아래와 같이 10진수로도 16,000에 가까운 숫자임을 알 수 있다.

0x4000 의 10진수 값 (계산기)

1MB는 hex로 표현하면 0x10 0000 (= 1024 * 1024 = 0x400 * 0x400)이다.(0이 많아서 4자리씩 띄움)

따라서 64MB 는 64 * 0x10 0000 = 0x40 * 0x10 0000 =  0x400 0000 이된다.

역시나 계산기에서도 64,000,000 에 가까운 숫자임을 확인 할 수 있다.

동일하게 GB도 계산해보면 1024를 3번 곱하면 되고 이는 16진수로 0x4000 0000 가된다.

눈치챘겠지만 KB, MB, GB로 갈때 앞에 숫자가 4이면 1로 증가한다.

그도 그럴 것이 십진수 4 곱하기 4는 16이고

16진수에서는 16이 새로운 앞자리의 1로 넘어가기 때문이다.

이래서 컴퓨터에서는 16진수를 많이 사용한다.

Comments