[JAVA] '진법'이란?(numeral system) [10진법, 2진법, 비트와 바이트, 8진법, 16진법]

2022. 1. 8. 15:21·◎ Java/Java☕
728x90


1. 10진법과 2진법

우리가 일상생활에서 주로 사용하는 것은 10진법이다. ex) 0~9까지의 수

그러나, 컴퓨터는 2진 체계로 설계되었기에 아래와 같이 10진수가 아닌 2진수로 바꾸어 저장한다.

 

int age = 25; // 변수 age에 11001[2](25[10])를 저장

 

이처럼 2진법은 0과 1로만 데이터를 표현하기에 10진수에 비해 많은 자릿수를 필요로 한다.

* 10진수 2와 같이 작은 숫자도 2진수로 표현하려면 2자리가 필요하다. ex) 10 [2]


2. 비트(bit)와 바이트(byte)

한 자리의 2진수를 '비트(bit, Binary digit)'라고 하며, 1비트는 컴퓨터가 값을 저장할 수 있는 최소 단위이다.

 

그러나, 1비트는 너무 작은 단위이기 때문에 1비트 8개를 묶은 '바이트(byte)'를 기본 단위로 사용한다.

 

n비트로 표현할 수 있는 10진수
값의 개수 : 2ⁿ
값의 범위 : 0 ~ 2ⁿ-1

 

이 외에도 '워드(word)'라는 단위가 있는데, 'CPU가 한 번에 처리할 수 있는 데이터의 크기'를 의미한다.

* 32bit CPU에서 1 워드는 32비트(4바이트), 64bit CPU에서 64비트(8바이트)이다.


3. 8진법과 16진법

2진법은 오직 0과 1로만 값을 표현하기에 자릿수가 상당히 길어진다는 단점이 있다.

 

이러한 단점을 보완하기 위해 8진법이나 16진법을 사용한다.

 

8진수는 2진수 3자리를, 16진수는 2진수 4자리를 각각 한 자리로 표현할 수 있기에 자릿수가 짧아져서 알아보기 쉽고 서로 간의 변환 방법 또한 매우 간단하다.

 

ex) 1010101100 [2] = 684 [10]

- 8진법 변환 : 숫자를 뒤에서부터 3개로 묶는다.
001 [2] / 010 [2] / 101 [2] / 100 [2]
1 / 2 / 5 / 4 →1254 [8]

- 16진법 변환 : 숫자를 뒤에서부터 4개로 묶는다.
0010 [2] / 1010 [2] / 1100 [2]
2 / A / C → 2AC [16]

 

참고문헌 : 남궁성(2016), Java의 정석, 도우출판

728x90
'◎ Java/Java☕' 카테고리의 다른 글
  • [JAVA] 실수의 진법 변환 [10진 소수점수를 2진 소수점수로 변환]
  • [JAVA] 정수의 진법 변환 [10진수를 n진수로 변환, n진수를 10진수로 변환]
  • [JAVA] 문자 리터럴과 문자열 리터럴 [String, 덧셈 연산자를 이용한 문자열 결합]
  • [JAVA] 상수와 리터럴(constant & literal) [상수와 리터럴의 정의, 리터럴의 타입과 접미사]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (937)
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (32)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (40)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (4)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (89)
        • 백준(BOJ)👨🏻‍💻 (70)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
        • 알고리즘(Algorithm)🎡 (10)
      • ◈ Study (102)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (6)
      • ◈ 공부모임 (39)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (11)
      • ◈ 자격증 공부 (37)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (113)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (44)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 태그

    html
    BOJ
    Project
    Java
    CSS
    jsp
    자바스크립트
    Database
    꿀팁
    spring
    코딩 테스트
    일상
    프로그래밍
    Oracle
    백준
    SQL
    Error Note
    백준 티어
    코딩
    javascript
  • 250x250
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[JAVA] '진법'이란?(numeral system) [10진법, 2진법, 비트와 바이트, 8진법, 16진법]
상단으로

티스토리툴바