티스토리 뷰
4-1 컴퓨터가 데이터를 표현하는 방식
컴퓨터는 모든 데이터의 표현 및 연산을 2진수로 처리한다.
연습문제 4-1
문제 1
ok
문제 2
ok
비트 - 컴퓨터가 나타내는 데이터의 최소 단위로서 2진수 값 하나(0 or 1)를 저장할 수 있는 메모리 공간을 의미
바이트 - 비트가 8개 모인 것
연습문제 4-2
문제1
4비트 = 2의 4승 = 16
1바이트 = 8비트 = 2의 8승
4바이트 = 32비트 = 2의 32승
문제2
0,1,2,4,8,16,32,64,128
문제3
17, 162, 247
0x로 시작하는 수 - 16진수
0으로 시작하는 수 -8진수
4-2 정수와 실수의 표현 방식
가장 왼쪽에 있는 비트는 부호를 표현하는데 사용된다. 그래서 이 비트를 MSB(Most Significant Bit)라고 한다.
음수를 표현할 때에는 2의 보수 체계를 기억해야 한다.
+5는 00000101
-5는 11111011 이 된다. (MSB만 바꾼 10000101이 아니다! 주의!)
연습문제 4-3
문제1
79
51
문제2
-41
-112
컴퓨터가 실수를 표현하는 방식은 오차를 지닌다.
넓은 범위의 실수를 표현할 수 있다는 장점과 더불어 오차가 존재한다는 단점도 지닌다.
부동소수점 오차 - 실수를 표현하는데 있어서는 오차가 있는 것이 당연한 일이며, 이 오차를 말한다.
컴퓨터는 실수를 100% 정확히 표현하지 못한다. 다만 근사치를 표현할 뿐이다.
4-3 비트 단위 연산
연산자 |
연산자의 의미 |
결합성 |
& |
비트 단위 AND Ex) a & b |
→ |
| |
비트 단위 OR Ex) a | b |
→ |
^ |
비트 단위 XOR Ex) a ^ b |
→ |
~ |
비트 단위 NOT Ex) ~a |
→ |
<< |
왼쪽으로 이동 Ex) a << 2 |
→ |
>> |
오른쪽으로 이동 Ex) a >> 2 |
→ |
AND, OR, XOR, NOT의 활용은 생략하고,
비트이동을 알아보자.
먼저 왼쪽으로 비트이동이다.
a = 0010 일 때,
a << 2 를 풀어보면
두 칸 왼쪽으로 이동하여 1000이 된다. (삐져 나오는 부분은 삭제하고, 뒤에 빠진부분에 00을 삽입하면 된다.)
왼쪽으로 비트 이동은 원래 10진 값이 2였는데 2칸 비트 이동후에는 8이 되었다. 1비트씩 왼쪽으로 이동할 떄마다 값이 두 배가 된다는 것을 확인 할 수 있다.
오른쪽으로 비트이동은 왼쪽으로 비트 이동과 같다.
하지만 음수일 경우에는 주의가 필요한데
a= 1111일 때, (10진 값으로 -1이다)
a >> 2를 풀어보면
0011 or 1111이 될 것이다.
답은 1111이다. 따라서 -1이 된다.
왼쪽으로 비트 이동은 값이 1/2만큼 줄어들고, 부호의 변환은 없다. 각자 프로그램으로 확인해 보자!
연습문제 4-4
문제1
문제2
문제3
생략
이번 장에서 공부한 내용 정리
1. 2진수와 16진수에 대해서 살펴보았다.
2. 정수와 실수가 컴퓨터에 의해서 표현되는 방법을 살펴보았다.
3. 실수를 표현하는데 있어서 오차가 발생하는 이유를 살펴보았다. 가장 중요한 내용이라 할 수 있다.
4. %d 이외에 %f라는 서식 문자에 대해서 살펴보았다.
5. 비트 단위 연산에 대해 살펴보았다.
'Programming > C' 카테고리의 다른 글
[C언어] 열형강의 C 프로그래밍 [6장 - printf와 scanf 함수에 대한 고찰] (0) | 2020.06.09 |
---|---|
[C언어] 열형강의 C 프로그래밍 [5장 - 상수와 기본 자료형] (0) | 2020.06.09 |
[C언어] 열형강의 C 프로그래밍 [3장 - 변수와 연산자] (0) | 2020.06.09 |
[C언어] 열형강의 C 프로그래밍 [2장 - 프로그램의 기본 구성] (0) | 2020.06.09 |
[C언어] 열형강의 C 프로그래밍 [1장 - 이것이 C언어다] (0) | 2020.06.09 |
- Total
- Today
- Yesterday
- 오브젝트 스토리지
- 정규식
- 열혈강의
- C
- OSI7layer
- docker
- 숫자체크
- M2E
- 개념
- block storage
- Framework
- 자료구조
- 특징
- 전자정부프레임워크
- Kubernetes
- file storage
- C언어
- 파일 스토리지
- 도커
- 쿠버네티스
- 블록 스토리지
- 자바
- RDB
- 문자체크
- 열혈강의 프로그래밍
- Spring
- 코딩
- Java
- object storage
- anyframe
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |