데이터 형 이론

컴공생의 코딩 일기·2024년 10월 7일

회사 공부

목록 보기
1/7

비트(bit) / 바이트(Byte)

컴퓨터 메모리에서 모든 데이터는 이진수 (0과 1)로 표현된다.
  • 비트(bit)는 2진수로써 0또는 1의 값을 가진다.
  • 컴퓨터는 일반적으로 8개의 단위의 비트(8bit)를 하나의 그룹으로 사용하는데 이를 바이트(Byte)라고 한다.

    바이트는 8개의 비트로 2^8(256)개 까지 저장 가능(비트는 0또는 1의 값을 가지기 때문)

비트와 바이트의 대소문자 구분

  • 비트(bit)는 소문자로 'b'를 사용 - 예: 'Mbps'
  • 바이트(byte)는 대문자로 'B'를 사용 - 예: 'MB'

바이트 배열(Byte Array)

바이트 배열(Byte Array) 이란 컴퓨터 메모리에서 연속적인 바이트 단위로 데이터를 저장한 구조이다.

바이트 배열(Byte Array) 특징

  1. 연속적인 메모리 할당
  2. 숫자, 문자, 이미지, 오디오 등 다양한 형태의 데이터를 저장할 수 있다.

비트 연산자 (AND, OR, XOR)

비트 연산자는 컴퓨터 프로그래밍에서 비트 단위로 논리 연산을 수행하는 연산자이다. 주로 정수 값을 비트 단위로 다룰 때 사용되며 AND, OR, XOR, NOT 등의 기본 연산자가 있다. 각각의 연산자는 비트 단위에서 0과 1을 조합하여 결과를 생성한다.

AND 연잔자 - &

  • 두 비트가 모두 1일 때만 결과가 1이 된다.
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
1101 & 1011 = 1001

OR 연산자 - |

  • 두 비트 중 하나라도 1이면 결과가 1이 된다.
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
1101 | 1011  = 1111

XOR 연산자 - |

  • 두 비트가 다를 때만 결과가 1이 된다.
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
1101 | 1011  = 0110

NOT 연산자 - ~

  • 비트 값을 바꾼다. (0은 1로, 1은 0으로)
  • 단항 연산자(피연산자가 하나뿐)
 ~1011  = 0101

2진수, 10진수, 16진수

2진수

  • 표현할 수 있는 숫자가 0,1 2개로 이루어져 있다.
  • 컴퓨터의 기본 언어로, 모든 데이터와 명령어가 2진수로 변환되어 처리된다.
예시: 1011 (2진수) = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 11 (10진수)

10진수

  • 0에서 9까지 총 10개의 숫자를 사용하여 숫자를 표현
예시: 47 (10진수)

16진수

  • 0에서 9까지의 숫자와 A,B,C,D,E,F의 문자(총 16개)를 사용하여 숫자를 표현
  • 메모리 주소 및 색상 코드 등에서 많이 사용된다.
예시: 47 (10진수)

2진수를 10진수로 변환

16진수를 10진수로 변환

10진수를 2진수로 변환

10진수를 16진수로 변환

ASCII, String – 바이트와 String 의 차이

ASCII(American Standard Code for Information Interchange)

  • ASCII는 미국 표준 정보 교환 코드로, 컴퓨터가 문자를 숫자로 변환하는 방식이다.
  • 주로 문자(알파벳, 숫자, 특수 기호)를 7비트로 표현하며, 총 128개의 문자 집합을 표함

String

  • String은 문자들이 연속적으로 배열된 문자열 형태이다.
  • 프로그래밍 언어에서 주로 텍스트 데이터를 처리할 때 사용된다.
  • 문자들이 배열된 순서에서 저장되며, 문자 개수에 따라 길이가 달라진다.
에시: "Hello" // 5개의 문자가 연속적으로 배열된 형태

바이트와 String의 차이

  • 바이트(Byte):
    • 컴퓨터가 처리하는 가장 작은 데이터 단위로, 모든 데이터가 바이트로 표현된다.
    • 텍스트는 물론, 이미지, 사운드 등 모든 파일의 기본 표현 단위
    • 예: "Hello"라는 String은 각 문자마다 1바이트씩 차지하게 되므로, 총 5바이트(영문 기준)가 된다.
  • String:
    • 텍스트 데이터를 의미, 여러 문자가 연결된 형태
    • 문자 단위의 배열이며, 각 문자가 1바이트 이상의 메모리를 차지할 수 있음
    • 예: 영문 문자는 1바이트씩 차지하지만, 유니코드 기반 한글 문자는 2~3바이트를 차지한다.

ASCII와 바이트, String 간의 관계

  • ASCII: 문자를 숫자로 변환해주는 코드
  • 바이트: ASCII 코드 또는 문자들이 차지하는 메모리 단위
  • String: 바이트 단위로 연속된 문자를 배열하여 표현하는 텍스트 데이터

    ASCII는 문자를 숫자로 변환하는 표준, 바이트는 데이터를 저장하는 단위, String은 문자의 집합

Hexadecimal(16진수) vs Hex String의 차이

  • Hexadecimal
    • 숫자 형식으로, 값 자체가 16진수로 표현된 수이다.
    • 주로 수학적 계산에서 사용될 수 있다.
    • 예: 0X1A3(419를 나타내는 16진수 값)
  • Hex String
    • 문자열 형식으로, 16진수의 각 자릿수를 문자 형태로 다룬다.
    • 계산보다는 데이터를 문자열로 표현할 때 사용된다.
    • 예: "1A3"(16진수 값을 문자로 표현한 문자열)

BCD 코드

BCD 코드(Binary Coded Decimal)는 10진수 0부터 9까지를 2진화한 코드로 실제 표기는 2진수지만 10진수 처럼 사용되는 코드이다. 즉 0000~1001까지만 사용하고 1010~1111은 사용하지 않는다.

  • BCD의 한 자리는 항상 4비트(0000~1001)로 표현되며, 이는 10진수 0~9에만 해당한다.

  • 만약 BCD 한 자릿수가 10 이상이 되면(예: 1010, 1011, ...), 올바른 BCD 값이 아니므로 수정을 해줘야 된다.

  • BCD에서 10을 넘어가는 값을 처리할 때는 6을 더해 자동적으로 캐리를 발생시켜 올바른 자리수로 맞춘다.

    6을 더함으로써 캐리지 리턴이 생겨서 자릿수가 넘어감을 볼 수 있다. 6을 더하는 이유는 이진수 4자리는 0 ~ 15까지 표현할 수 있는데 BCD에서는 10~15 안 쓰게 되어 6개를 건너뛰는 게 된다. 그렇기에 9가 넘어가면 임의적으로 6을 더해 계산하게 된다.

Refrence

https://itbeginner2020.tistory.com/17
https://jungreeyoung.tistory.com/entry/BCD%EC%BD%94%EB%93%9C

profile
더 좋은 개발자가 되기위한 과정

0개의 댓글