보수의 정의
- 상호 보완하는 수로, 임의의 수를 보완해주는 다른 임의의 수
- 컴퓨터에서 보수는 음수를 표현하는 데 사용
- r진법에서 정의되는 보수 → (r-1)의 보수, r의 보수
- (r-1)의 보수: (r^n - 1) - N, A라는 수에 B라는 수를 더한 결과값의 각 자리가 (r-1)이 될 때, B를 A에 대한 (r-1)의 보수라고 정의
- r의 보수: r^n - N, A라는 수에 B라는 수를 더해서 각 자리마다 자리올림이 발생하고 해당 자리는 0이 될 때, B를 A에 대한 r의 보수라고 정의
부호가 없는 10진수의 뺄셈 연산에서 보수의 활용
- 컴퓨터에서 뺄셈 연산은 보수를 이용하는 것이 효율적임
- 부호를 표시하지 않는 10진수에서 보수를 이용한 뺄셈 연산로, 임의의 수를 보완해주는 다른 임의의 수
- 컴퓨터에서 보수는 음수를 표현하는 데 사용
- r진법에서 정의되는 보수 → (r-1)의 보수, r의 보수
- (r-1)의 보수: (r^n - 1) - N, A라는 수에 B라는 수를 더한 결과값의 각 자리가 (r-1)이 될 때, B를 A에 대한 (r-1)의 보수라고 정의
- r의 보수: r^n - N, A라는 수에 B라는 수를 더해서 각 자리마다 자리올림이 발생하고 해당 자리는 0이 될 때, B를 A에 대한 r의 보수라고 정의
데이터의 2진수 표현
부호가 있는 2진 정수의 표현
- ① 부호화 - 크기 표현: n비트로 구성된 2진수에서, 최상위 비트는 부호비트(signed bit)이고 나머지 n-1개의 비트들은 수의 절대 크기(magnitude)를 나타냄
- ② 1의 보수 표현: 모든 비트를 반전 (0→1, 1→0)
- ③ 2의 보수 표현: 모든 비트들을 반전하고, 결과값에 1을 더함
- 보수를 이용하면 부호 비트가 자연스럽게 변경되고, 그 크기도 적절한 형태로 변경
- 2의 보수는 0에 대한 표현이 하나만 있으며 산술 연산이 용이
- 2의 보수는 가장 효율적이기 때문에 컴퓨터를 비롯한 디지털 장치에 부호를 갖는 2진수를 표현하는데 사용
2진수의 표현 범위
- -2ⁿ⁻¹ ≤ N ≤ -2ⁿ⁻¹ -1
- n비트 데이터의 경우로 일반화 했을 때의 수의 범위
비트 확장
- 부호가 존재하는 데이터의 비트 수를 늘리는 연산을 비트확장이라고 함
- 부호화 - 크기 표현의 비트 확장
- 부호 비트를 확장되는 최상위 자리로 이동시키고, 나머지 새로 확장되는 크기 비트들은 0으로 채움
- 2의 보수로 표현된 2진수의 비트 확장(부호 비트 확장)
- 확장되는 상위 비트들을 부호 비트와 동일한 값으로 채움
소수의 표현
- 소수를 포함하는 10진수의 2진수 표현
- ①정수 부분과 소수 부분을 분리
- ② 정수 부분의 10진수를 2진수로 변환
- ③ 소수 부분의 10진수를 2진수로 변환(2로 연속적인 곱셈을 수행하면서 생기는 자리 올림수)
- ④ 얻어진 정수와 소수의 2진수를 합함
- 소수점을 포함하고 있는 2진수를 10진수로 변환
- 정수 부분은 2의 지수 승, 소수 부분은 2의 (-)지수 승을 사용
부동소수점의 표현
- Floating-point
- 고정소수점 표현
- 소수가 고정된 소수점을 통해서 구분하여 표현된 방식
- 표현 범위의 한계가 있어 아주 큰 값과 매우 작은 값을 표현하는 것이 불가능
- 부동소수점 표현
- 지수를 사용, 소수점의 위치를 이동하여 수의 표현 범위를 확대
- ±M × B^±E
- M: 가수 / B: 기수 / E: 지수
- 2진 부동소수점 수 표현
- 단일-정밀도 부동소수점 수: 32비트로 표현
- 부호 필드는 1비트로 0이면 양수이고 1이면 음수
- 지수 필드(8비트)는 지수 값을 저장하는 곳
- 가수 필드는 23비트로 표현, 고정소수점 수와 비교해서 표현할 수 있는 수의 넓이가 훨씬 넓음
- 복수-정밀도 부동소수점 수: 64비트로 표현
- 각 필드의 비트 할당 문제는 표현하는 수의 범위와 정밀도를 결정
- 지수 필드의 비트 수가 늘어나면 표현 가능한 수의 범위가 확장
- 가수 필드의 비트가 늘어나면 2진수로 표현할 수 있는 수가 많아져 정밀도가 증가
- 단일-정밀도 부동소수점 수: 32비트로 표현
바이어스된 지수값
- 정규화된 표현에서 소수점 우측의 첫 번째 비트는 항상 1로 생략 가능
- 가수 필드 23비트를 이용하여 생략된 소수점 아래 첫 번째 1을 포함하여 24자리의 수까지 표현 가능하게 되어 1비트를 더 표현 가능
- 지수의 바이어스된 수(biased number)로 표현
- 지수 필드의 지수는 양의 값뿐만 아니라 음의 값을 가지므로 부호에 대한 표현이 필요함
- 지수를 바이어스된 수로 표현하면, 음수의 표현뿐만 아니라 0에 대한 표현에서 모든 비트가 0이 되게 함
IEEE 754 표준
- 국제 표준: ±1.bbbb...bbb × 2^±E
- 단일 정밀도 형식
- 지수: 8비트
- 바이어스: 127
- 가수: 23비트
- 표현 영역: 10⁻³⁸ ~ 10³⁸
- 복수 정밀도 형식
- 지수: 11비트
- 바이어스: 1023
- 가수: 52비트
- 표현 영역: 10⁻³⁰⁸ ~ 10³⁰⁸
- 지수(E) 필드의 비트 수가 늘어나면 표현 가능한 수의 범위가 확장
- 가수(M) 필드의 비트 수가 늘어나면 정밀도 증가
2진수의 연산
산술 연산
- 덧셈은 특별한 게 없음
- 뺄셈의 경우 빼는 수의 2의 보수를 구하고 뺄 수와 더하여 연산
- 곱셈과 나눗셈도 아래처럼 10진수와 다를 게 없음
논리 연산
- 주어진 명제에 대하여 참과 거짓을 결정하는 연산
- 컴퓨터와 같은 디지털 장치에서는 많은 산술 연산뿐만 아니라 다양한 논리 연산을 지원
- AND: 모든 입력이 1일 때 1을 출력하고 아닌 경우 0 출력
- OR: 입력 중 하나라도 1이면 1을 출력하고 아닌 경우 0 출력
- XOR: 입력이 모두 동일할 경우 0을 출력하고 아닌 경우 1 출력
- NOT: 입력의 반대를 출력
응용 논리 연산
- 선택적 세트 연산: 2진수의 특정 비트를 선택하여서 1로 세트시키는 연산, 세트할 비트들에 OR 연산으로 세트
- 선택적 보수 연산: 특정 부분만 비트를 반전, 반전할 비트들에 XOR 연산으로 반전
- 마스크 연산: 원하는 비트들을 선택적으로 clear(0)하는데 사용하는 연산, clear할 부분에 AND 연산으로 clear
- 삽입 연산: 특정 위치에 새로운 비트 값들을 삽입, 마스크 연산으로 clear 후 새로 삽입할 비트들로 OR 연산 수행
- 비교 연산: 두 데이터를 비교하는 연산, XOR 연산을 통해 비교
- 순환 이동: 최상위 또는 최하위에 있는 비트가 반대편 끝에 있는 비트 위치로 이동해서 비트가 회전
- 순환 좌측 이동: 최상위 비트가 최하위 비트 위치로 이동
- 순환 우측 이동: 촤하위 비트가 최상위 비트 위치로 이동
- 산술적 이동: 이동 과정에서 부호 비트는 유지하고 수의 크기를 나타내는 비트들만 이동
문자 데이터의 표현
- 패리티 비트: 전송 과정에서 1비트 오류를 검출하기 위한 비
- 표준 BCD 코드
- 이진화 십진 코드
- 기본적으로 6비트의 길이를 갖는 코드이지만 좀 더 효율적으로 사용하기 위해서 존 비트와 숫자 비트로 분리하고 이를 조합해서 코드를 생성
- 패리티 비트(1) + 존 비트(2) + 숫자 비트(4) → 64가지의 문자, 숫자, 특수문자의 정보를 표현
- 아스키 코드
- 미국 국립 표준 연구소(ANSI)가 제정한 정보 교환용 미국 표준 코드
- 코드의 길이는 7비트와 패리티 비트가 추가된 두 종류의 8비트 코드가 있으며 128(=2⁷)가지의 정보를 표현 가능
- 패리티 비트(1) + 존 비트(3) + 숫자 비트(4)