• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

2진수와 16진수의 용도가 궁금합니다.

20.12.12 16:35 작성 조회수 543

1

10진수는 사람이 주로 쓰는 숫자고 2진수가 컴퓨터의 신호인 껏다켰다하는 신호로 2진수를 쓴다는 것은 강의를 통해 알게 되었습니다.

10진수는 사람의 눈에 보이는 체력 숫자라던지 적의 남은 숫자 등 이런식으로 사용되는 것으로 알고 있습니다.

하지만 앞서 설명하실때 2진수와 16진수도 꼭 숙지하고 있어야 한다고 했습니다만 어디에 주로 사용하는지 모르겠습니다.

어디에 주로 사용되는지 말씀해주시면 감사하겠습니다.

답변 1

답변을 작성해보세요.

6

10진수는 사람의 눈에 보이는 체력 숫자라던지 적의 남은 숫자 등 이런식으로 사용되는 것으로 알고 있습니다.

-> 살짝 이해를 잘못 하고 계신 것 같네요!
2진수 10진수 16진수는 동일한 숫자를 표현하는 다양한 방법일 뿐,
특별히 무엇을 사용해야 한다는 강제 사항은 없습니다.
그러니까 int hp = 100; 이라는 문법으로 hp에다 (10진수)100이라는 숫자를 넣었다고 해서
실제로 10진수로 숫자가 저장된다거나 하는 것은 절대 아닙니다.

프로그램을 구성하는 메모리는 결국 전기 신호 유무로 판단하기 때문에
물리적으로 
01100100과 같이 신호가 있냐 없냐는 일종의 '전구'들이 있는 것이고,
이를 우리가 이해하기 쉽게 변환하면 2진수에 가장 근접한 것이죠. (0b01100100)
0b01100100이라는 숫자는 우리 입장에서 쉽게 이해가 되지 않기 때문에
이를 우리가 평소에 사용하는 10진수로 변환해서 '100'이라 부르는 것에 불과합니다.
그러니 hp = 100이나 hp = 0b01100100이나 사실상 똑같은 의미가 됩니다.

2진수는 실제 데이터 저장 방식에 가장 근접한 표현 방식이지만,
사람 입장에서 보면 너무 숫자가 금방 늘어나는 단점이 있습니다.
일례로 위의 10진수 100만 봐도 
0b01100100와 같이 8자리 숫자가 되어 버렸습니다.
16진수는 어떻게 보면 10진수와 2진수의 중간,
그러니 '사람도 적당히 보기 편하고 숫자도 너무 늘어나지 않는' 차선책이라 볼 수 있습니다.
2진수 기준으로 숫자를 4개씩 끊은 다음 변환이 가능한데,
0b01100100 = 0b
0110 0100 = 0x 6 4 라는 숫자로 표기가 가능합니다.

아무튼 진법 변환이란 무엇을 선택한다고 달라지는 개념이 아니라는 것을 기억하시면 되겠습니다.
동일한 '사과'를 보더라도 한국어는 사과, 영어는 apple, 프랑스어는 pomme라고 표현하는 것처럼
동일한 사물을 각자 다른 관점으로 표현한 것에 불과합니다.