본문 바로가기
C++/강의 정리

[C++ 섹션 1.어셈블리 언어 입문] 2 - 데이터 기초

by 몽실이 2022. 1. 3.
인프런 강의 "[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문"
강의를 정리한 글입니다.

 

프로그래밍이란 결국 데이터를 잘 저장하고 가공해서 작업하는 것

 

컴퓨터의 데이터 판별 방식


비트 바이트 설명

  • 전기신호의 유무 0,1 두 가지 값으로만 판별

기초 단위명 비트(bit)

비트가 8개 모인 단위 명 바이트(Byte) = 8bit

 

양수 표현


1바이트로 10으로 표현하는 예시

  • 각 비트의 값은 2의 제곱 값으로 표현되어있다.
  • 각 비트의 전기신호가 있으면 해당 값들을 더해서 총합을 나타낸다.

ex) 현재 10을 표현한 예시 사진을 보면 첫 번째 비트 값부터
1, 2, 4 ,8 ,16, 32, 64, 128, 값들이 있고 2번째(2) 4번째(8)의 비트가 켜져 있으므로

2 + 8 = 10이라는 결과가 나온다. 

 

음수 표현


8비트의 음수표현

  • 음수 표현 시 최 상위 비트 값은 -가 붙어서 즉 2의 보수로 표현된다.
보수의 뜻
"두 수의 합이 진법의 밑수(N)가 되게 하는 수"를 뜻한다.
예를 들어 10진수 4의 10의 보수는 6이고, 10진수 2의 10의 보수는 8이다.
보수는 컴퓨터에서 음의 정수를 표현하기 위한 수단
컴퓨터는 사칙연산에서 덧셈을 담당하는 가산기(Adder)만 사용하기 때문에 뺄셈을 덧셈 형식으로 변환 후 계산
ex) A - B를 계산할 때 B의 보수(-B)를 구한 다음 A + (-B)로 계산하는 방식 8 - 2 -> 8 + (-2) = 6

1의 보수 : 각 자릿수의 값이 모두 1인 수에서 주어진 2진수를 빼면 1의 보수
ex) 2진수 1010의 1의 보수는 0101이다.

2의 보수
: 1의 보수에 1을 더한 값

ex) 2진수 1010의 1의 보수 0101에서 1을 더하면 2의 보수 값인 0110이 된다.

"즉 모든 비트를 반대 값으로 해주고 1을 더해주면 2의 보수"

 

그냥 최 상위 비트 값이 켜져 있으면 - 붙이는 단순한 방식을 사용하지 않는 이유
최상위 비트만 켜져 있을 경우 -0이 되기 때문에
-0, 0 두 가지 0의 상태를 나타내기 때문에 사용불가

 

-62 표현 예시

  • 음수의 계산 방법은 최상 위 비트 음수 값 + 나머지 양의 비트 값이다.

ex) 최 상위 비트가 켜져 잇으니 -128 값이 있고 나머지 켜져 있는 양의 비트 값 64, 2 를더해서 
2 + 64 + (-128) = -62란 값이 나온다.

 

진수


10진수

  • 일반적으로 가장 많이 쓰이는 진수
  • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9로 구성
  • 10진수는 따로 앞의 수식어를 붙이지 않는다.

10, 11, 12... 같이 모든 숫자로 구성하지 않는 이유는 숫자 정의가 너무 많지가 때문에 그 외 숫자들은 
다음 계산법을 써서 표현

 

9 다음 숫자를 표현할 때 9를 0으로 리셋하고 그 앞자리의 수에 1을 더 해줌

ex) 9에서 다음 숫자 10의 표현은 9를 0으로 리셋하고 앞의 1을 더해줘서 10이란 값이 나옴

10진수는 따로 표현하지 않음

 

2진수

  • 컴퓨터가 알아보는 수 표현
  • 0, 1 두 가지 수로만 구성
  • 2진수는 0b라는 수식어를 붙인다 ex) 0 b01, 0 b101

2진수 의 표현 방식도 1을 더하고 1을 넘으면 0으로 리셋 후 앞의 수의 1을 더해줌

ex) 0b0, 0b1, 0b10, 0b11, 0b100, 0b101 

 

16진수

  • 0 ,1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F로 구성
  • 2진수를 16진수로 표현하기 좋음
  • 16진수는 0x라는 수식어를 붙인다. ex) 0x1, 0x1F

16진수도 F다음 수는 F를 0으로 리셋하고 그 앞 수에 1을 더해줌

ex) 10진수 16을 표현 시  최대 값 15인 0xF를 0으로 리셋하고 1을 더해줘서 0x10이 된다.

2진수를 16진수로 바꾸는 방법
2진수를 4자리씩 끊어서 16진수의 각 자릿수로 표현
ex) 10010101 -> 1001 0101 -> 1001=9 + 0101=5 = 95 

 

SASM


';' 주석 예시

  • 주석 = 프로그램에 영향이 없고 사용자가 알아볼 수 있도록 메모해둔 것.
  • SASM에선 ';' 키워드로 주석을 남길 수 있다.