코딩이란 무엇일까

JAVA/자바[과제] 2진수와 16진수에 대해 알아보기 본문

국비지원수업

JAVA/자바[과제] 2진수와 16진수에 대해 알아보기

둥구는 지굴다 2022. 10. 23. 21:23
⚠️글을 읽으시기전 필자는 아직 코딩을 공부하고 있는 학생입니다.
여러 책과 블로그 글, 수업을 바탕으로 정리한 내용이니 부족한 부분있다면 댓글로 남겨주시기 바랍니다.

 

오늘은 수업 중 과제로 주신 2진수와 16진수에 대해 알아보자

목차

  1. 2진수의 비트수와 표현 범위
  2. 16진수는 왜 사용할까요?
  3. 2진수를 16진수로 또는 16진수를 2진수로 변환하기

비트란?

컴퓨터가 담을 수 있는 최소 단위입니다.

비트는 0과 1로 구성돼있습니다.

1Byte

1Byte는 bit가 8개 모였을 때 1Byte라고 부릅니다.

따라서 경우의 수를 생각해 봤을 때

8Bit는

2의 8승 즉, 256가지의 정보를 담을 수 있음

0~255

10진수로 생각했을 때

8bit = 1Byte

1KB=1000Byte

1MB=1000KB

1GB=1000MB

1TB=1000GB

라는 단위가 나옵니다.

2진수란?

2진수는 0과 1만을 사용하는 수 체계이며 컴퓨터 내에서 데이터를 표현하기 위해 사용됩니다.

16진수

16진수는 16을 기수로 하는 번호 체계를 뜻합니다. 2진수가 0과 1만을 사용하는 수 체계이라면

16진수는 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F, 까지 0~F까지 사용합니다.

16진수를 사용하는 이유는?

우선  2진수로 16진수를 표현할 수 있는 이유는 16진수가 2의 4승 이므로

2진수를 4자리 수로 표현할 수 있는 것이다.

따라서 0000 1111. 1010 0011. 0111 0000. 0100 1000이라는 2진수를 16진수로 표현하려면 4자리씩 끊어주면 16진수로 변환해 줄 수 있는 것이지요. 위의 숫자를 16진수로 변환하면

0F.A3.70.4A라는 16진수로 표현할 수 있습니다.

이렇게 되면 10진수, 2진수로 표시할 대보다 16진수로 표시할 때가 더 짧아지기 때문에 

16진수로 표현하게 되는 것입니다.

2진수를 10진수로 변환하기

2진수를 16진수로 변환하기 위해서는 중간 단계인 2진수를 10진수로 변환을 한 뒤 16진수로 변환을 해주어야 합니다.

2진수를 10진수로 변환하려면 2진수의 1이 있는 자리의 거듭제곱을 구한 뒤 더해주어야 합니다.

추가적으로, 0으로 표현되어있는 부분은 계산하지 않습니다.

글로 설명하면 어려우니 예시를 하나 보여드리겠습니다.

ex) 1011이라는 2진수를 예로 들어보겠습니다.

위의 그림처럼 뒤에서부터 0,1,2, 각각의 자리에 2의 거듭제곱을 구한 뒤 더해줍니다 하지만 0은 무시하고 넘어가 줍니다. 이렇게 구한 값을 더해주면 11이라는 10진수가 나옵니다.

자 이제 10진수를 16진수로 변환해 보죠

10진수를 16진수로 변환해 보기

위의 11이라는 10진수의 값은 너무 작기 때문에 계산을 하지 않아도 B라는 값이 나오는 것을 알 수 있습니다.

그렇기에 좀 더 큰 값을 예시로 들어 변환해 보도록 하겠습니다.

100001101100이라는 2진수는 10진수로 변환했을 때 2156이라는 값이 나옵니다.

이 값을 16진수로 변환하려면 우선 16으로 나누고 몫과 나머지를 기록해 줍니다.

몫과 나머지를 기록하였다면 반대로 숫자들을 이어나갑니다.

위의 방법대로 해준다면 86C라는 16진수 값이 나옵니다.

16진수를 10진수로 변환

16진수를 10진수로 변환하는 방법에 대해 알아보겠습니다.

예를 들어 3AB라는 16진수가 있다 생각해봅시다.

우리는 이 값을 자리 수 별로 나누어 생각할 수 있어야 합니다.

16진수는 각 자리를 16개의 기호로 표기하기 때문에 한 자리가 16이 됩니다. 

따라서 10진수로 바꾸기 위해서는 각 자리에서 16의 거듭제곱을 곱해주어야 합니다.

이 곱한 값을 다 더해준다면 10진수로 변환할 수 있습니다.

예시로 든 3AB를 10진수로 바꾸어 보겠습니다.

위의 그림처럼 각 자릿수 별로 16의 거듭제곱을 곱해준 뒤 각각의 값을 더해주면 939라는 10진수로 변환을 해주었습니다.

10진수로 변환한 값을 2진수로 변환하기

10진수에서 2진수로 변환하는 것은 쉽습니다.

작은 값을 예로 들어 10이라는 숫자가 있다고 하고 10을 계속 2로 나누어

나누어지지 않을 때까지 나누어 줍니다. 그리고 몫과 나머지를 기억해 줍니다.

이 몫과 나머지를 반대로 이어나가면 2진수로 변환을 할 수 있습니다.

10을 2진수로 바꾸어 준다면 1010이라는 2진수가 나옵니다.

ex) 위의 939를 2진수로 변환해 보겠습니다.

위의 그림처럼 939라는 10진수를 계속 2로 나누어 몫과 나머지를 기억한 뒤 반대로 모두 이어준다면

1110101011이라는 2진수로 변환이 된 것을 확인할 수 있습니다.


이상으로 글 마치겠습니다.

글 읽어주신 분 모두 감사드립니다 😎

Comments