일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 패스트캠퍼스후기
- 알버트
- 직장인자기계발
- R
- 패스트캠퍼스
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지
- 패캠챌린지
- SKT
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
- 직장인인강
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
- AI
- albert
- 한번에끝내는Java/Spring웹개발마스터초격차패키지
- Today
- Total
제주 탈출 일지
패스트캠퍼스 챌린지 2일차 본문
2일차 시작.
04. 컴퓨터에서 자료 표현하기

컴퓨터 내부에서 자료가 어떻게 저장이 되는가에 대한 부분, 한번 다시 정리할 수 있었다.
사실 2진수, 8진수, 16진수에 대한 내용은 그렇구나 하고 넘어갔지만, MSB관련 내용이 나와서, 다시 한번 정리한다.
예전 디지털 설계 관련 멘토 당시 MSB가 1이면 음수인가? 에 대한 질문을 한 후배가 했던것이 기억에 남는다ㅋㅋ
(그 때 얼버무렸던거 같음. 정확히 몰라서)
자바 실습 화면.

이제 오류는 없다.
음수 표현(음수 만들기)
이제 컴퓨터에서 음수를 표현하려면 보수를 이용하는데, (보수란 A + B = 보수 형태로 나오는 것이라고 알고있음.)
이제 2의 보수를 취해주게 된다.
정수 5를 2진수 형태로 바꿔주면 00000101 이 되는데,
1. 보수를 취한다. -> 11111010 ( 이러면 두개 더한 값이 1111111 -> 요렇게 변함)
2. 2의 보수를 만들어야 하므로 LSB( 가장 오른쪽 비트) 에 1을 더함 -> 11111011
3. 11111011은 16진수로 FB 이다.
이제 그럼 컴퓨터에서 확인해보자..
본인 컴퓨터에 C가 없어서 온라인 컴파일러를 이용했는데, FF(11111111)와 -5를 비트곱 할 것이다.
그러면 -5의 2자리 16진수 형태를 파악할 수 있다. 아까 우리가 구했던 값은 FB이므로 여기서도 FB가 나오면 제대로 확인했다고 할 수 있다.

확-인했다.
컴퓨터 자료형에 대한 음수 범위 확인
양수를 음수로 만드는 방법은 알았으니, 이제 자료형에 범위를 통해 음수가 어떻게 생겨먹었는지 확인해보자
C의 int형는 4바이트, 즉 32비트이다.
이 int형의 범위는 2^31 -1 ~ 0 ~ - 2^31 일 것이다. ( -2,147,483,648 ~ 2,147,483,647 )
(2^10)^3 * 2^2 으로 생겨먹었으니 1024 * 1024 * 1024 * 4 이러면 2^32이다. 계산기로 두들겨 보면 다음과 같다.
4,294,967,296

이게 2^32이고, 32비트로 표현할 수 있는 총 범위 인 것이다. 근데 32비트로 양수 0 음수를 모두 표현해야한다.
음수 반 양수 반으로 나누면 0을 표현 못한다. (2^31 + 2^31 = 2^32) 그러니까 양수를 표현할 한자리를 0에게 할애하는 것이다. 그래서 2^31 -1 ~ 0 ~ -2^31 로 표현하는 것이다.
딴 길로 빠졌는데 결국, int형으로 표현할 수 있는 양수의 최댓값은 2^31-1 이라는 것! -> 2,147,483,647 이 값을 컴퓨터에서 찍어보자. 위와 동일하게 2,147,483,647과 0xFFFFFFFF를 곱해보면 어떻게 생겼는지 확인할 수 있을것이다.
7FFFFFFF가 나온다. (0111 1111 1111 ....) 와 같은 형태로 생겨먹었다. MSB를 보면 0이다. 양수라는 뜻.
그러면 2,147,483,647 + 1 한 값은? 아마 오버플로우가 나서 음수가 될것이라고 짐작할 수 있다.

역시 오버플로우가 나서 80000000이 되었다. (1000 0000 ....)
-2,147,483,647는 어떻게 생겼을까? 80000000 -1 은 7FFFFFFF인데 이것은 양수의 최댓값과 동일하다. 찍어보면 알수 있을것이다.

80000001이다. 음수가 하나 줄었을때 이진수 표현은 1이 더해졌다. ㅋㅋ, 마지막으로 음수의 최솟값인 -1을 찍어보자.

FFFFFFFF 가 나온다.
정리하면 음수 범위를 16진수로 적어보면 80000000(-2,147,483,648) ~ FFFFFFFF(-1) 인데 모두 부호비트가 1이다.
따라서, 부호비트가 1이면 int 범위에서는 음수이다를 확인해볼 수 있다.
cf. 부호가 없는 unsigned 자료형에서는 음수가 없기 때문에 MSB는 그저 최상위 비트이다.
정리 끝.
05. 변수는 변하는 수입니다.
대입연산 할때
lvalue, rvalue
age = 10000 이라고 하면, age가 10000이라는 것이 아닌 lvalue에 rvalue를 대입한다는 의미이다. 같다 아니다!
변수 명 설정할 때,
변수는 예약어는 사용할 수 없다.
변수는 숫자로 시작할 수 없다.
이 변수가 어떤 용도로 사용하는 지 확인할 수 있는 변수명으로 명명해야 한다.
int ns;
int numberOfStudent -> 가독성이 ns보다 더 좋다.
변수명이 길어도 가독성이 좋게 쓰자.
카멜 노테이션(낙타 등 같이, 소문자로 시작하고 단어가 바뀔 때마다 대문자로 시작)
cf. numberOfStudent
오늘은 여기까지만..
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'패스트캠퍼스 챌린지!' 카테고리의 다른 글
패스트캠퍼스 챌린지 6일차 (0) | 2021.09.11 |
---|---|
패스트캠퍼스 챌린지 5일차 (0) | 2021.09.10 |
패스트캠퍼스 챌린지 4일차 (0) | 2021.09.09 |
패스트캠퍼스 챌린지 3일차 (0) | 2021.09.08 |
패스트캠퍼스 챌린지 1일차 (0) | 2021.09.06 |