티스토리 뷰

이진수

  • 비트는 이진수로 이루어져 있다.
  • 십진수와 이진수를 비교한다면, 십진수는 0~9로 10개의 레이블을 붙일 수 있지만, 이진수는 0~1로 두 개의 레이블을 붙일 수 있다는 것 정도의 차이가 있다.
  • 우리가 거의 잊고 살고 있지만, 십진수는 10의 거듭제곱의 합을 줄여서 표기한 것이다.
1867 = 1 * 103 + 8 * 102 + 6 * 101 + 7 * 100
  • 이진수는 기수가 2이고, 사용되는 숫자가 0과 1뿐이라는 점을 빼면 똑같다. 아래 이진수를 십진수로 변환하면(다 더하면) 29가 된다.
11101 = 1 * 24 + 1 * 23 1 * 2 + 0 * 1 + 1 * 20

 

십진수를 이진수로 변환하기

  • 십진수를 이진수로 변환하는 것은 조금 더 복잡하다.
  • 십진수를 2로 계속해서 나누어 나머지를 붙이는 방식이다.
  • 이진수 변환하는 문제는 정보처리기사에서도 출제된다고 하니, 이 기회에 확실히 익혀두는 것이 좋겠다(https://blog.naver.com/thrmadlsgud/222537326820).
나머지
1867 933 1
933 466 1
466 233 0
233 116 1
116 58 0
58 29 0
29 14 1
14 7 0
7 3 1
3 1 1
1 0 1

 

이진 연산

  • 십진수를 이진수로 변환하는 것은 복잡할지 모르지만, 연산은 간단하다.
+ 0 1
0 0 1
1 0 0과 올림수 1

 

바이트

  • 컴퓨터에서 데이터 처리와 메모리 구성의 기본 단위는 8비트로, 이는 1바이트이다.
  • 단일 바이트로는 256개(2의 8승)의 값을 인코딩할 수 있다.
    • 문자나 기호들의 집합을 컴퓨터에 저장하거나 통신 목적으로 사용할 경우에는 부호로 바꾸어야 하는데, 이것이 인코딩이다.
    • 0~255의 정수이거나, 7비트 아스키코드 문자 집합 중 하나일 수 있다.
      • 아스키코드는 8비트로 이루어져 있는데, 7비트만 문자 표현에 쓰이고 1비트는 통신에러 검출을 위한 저장공간으로 사용된다.
      • 0은 48, A는 65, a는 97로, 문자 변환과 같은 간단한 연산에 사용될 수 있으니 외워둬도 좋을 것 같다.
  • 2바이트는 16비트로, 65535까지의 값을 나타낼 수 있으며, 유니코드 문자 집합에 있는 문자 한 개를 나타낼 수 있다.
    • 앞서 배운대로, 아스키코드로는 문자를 나타내기 부족해서 유니코드가 탄생했다.

 

십육진수

  • 위와 같은 문자라든가 더 크거나 복잡한 것을 나타내는 큰 그룹의 일부가 아니라, 비트 별로 다른 종류의 정보를 인코딩한다면, 개별 비트를 확인하기 위해 이진수로 쓸 수도 있다.
  • 하지만 이진수는 십진수 형태보다 세 배 이상 길어서 너무 많은 공간을 차지하므로 십육진수를 대안 표기법을 사용한다.
  • 십육진수는 16을 기수로 하여 16개의 숫자로 표시한다.
    • 0~9, A, B, C, D, E, F로 표현된다.
  • 십육진수는 RGB 색상 표현, 이더넷 주소, URL 상의 특수문자 표현에도 사용된다.
    • 000000, FFFFFF는 사실 16진수였다.

  • 컴퓨터를 살 때나 프로그램을 설치할 때 사용되는 64비트라는 표현은 컴퓨터가 내부적으로 데이터를 저장하기 위한 수와 주소를 가리킨다.
    • 30년 전에 16비트 주소 체계에서 32비트 주소 체계 이행이 이뤄졌고, 지금은 32비트에서 64비트로의 이행이 거의 완료된 상태이다. 다음은 128비트로의 이행이 되겠지만 아직 예정된 바 없다.

 

맺음

  • 가장 중요한 사실은 비트 모음의 의미가 상황에 따라 결정된다는 것이다. 숫자 자체로는 비트가 무엇을 의미하는지 식벼할 수 없다.
  • 단순히 데이터로서 복사외는 비트들은, 프로그램이 실행될 때는 CPU에 의해 처리되면서 명령어로 처리된다.

'개발' 카테고리의 다른 글

[Spring Boot] 테스트 케이스 작성하기  (0) 2022.05.25
[Spring Boot] 웹 브라우저 요청과 응답  (0) 2022.05.25
[Java] 제어자  (0) 2022.05.18
[Java] 패키지와 임포트  (0) 2022.05.17
[Java] 상속  (0) 2022.05.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
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
31
글 보관함