2019.06.30


오늘은 진도보다는 복습 위주로 함


댓글에서 막 과대평가 하는데 나 아직 함수도 완벽히 이해 못함


그냥 예제에서 쓰는거 보고 흉내내는 느낌




반환값, 매개변수의 유무에 따라 4가지로 나뉘는 형태


예제보면 이해되는데 막상 내가 쓰려고 하면 뭐 써야할지 고민됨



그 후 본건 이전 챕터에 있던 비트 연산자 파트



비트 연산자는 반드시 정수에만 쓸 수 있고 실수엔 쓸수없다고 함



&(AND) 연산: 두 개의 비트가 모두 1일 때 1을 반환

|(OR) 연산: 두 개의 비트중 하나라도 1일 때 1을 반환

^(XOR) 연산: 두 개의 비트가 서로 다르면 1을 반환

~(NOT) 연산: 비트를 반전(1을 0으로, 0을 1로)

<< 연산: 비트를 n만큼 왼쪽으로 이동 (2^n을 곱한 것과 같다)

>> 연산: 비트를 n만큼 오른쪽으로 이동


위에 사진에서 a>>2가 3이 되는 이유가

1111에서 오른쪽으로 2칸 밀어서 0011로 3 되는거 같은데

나누기 4하고 소수부를 버린거랑 동일하다고 생각하면 되나



다음엔 부동소수점 파트 한번 더 봄



소수부를 2의 제곱수들의 덧셈을 통해 근사적으로 표현하니까

0.5, 0.25, 0.125, 0.0625 등은 깔끔하게 표현 가능하지만

0.1은 이 방법으로 정확히 나타낼 수 없으므로 내부적으론 0.009999...

따라서 100번 수행하면 10이 아니라 10.000002가 나오는것 같은데 맞음?


for문 횟수를 17번으로 바꾸면 오차없이 1.7나오던데 이건 왜 그런거임?



다음은 여러 종류의 변수들



막 메모리 그림 나오는데 static이랑 지역변수가 좀 헷갈림


지역 변수 : 중괄호 내에 선언된 변수. 선언된 지역 내에서만 유효

전역 변수 : 함수의 외부에 선언된 변수. 어디서든 접근 가능하며 프로그램이 끝날 때까지 유효

static변수: 함수가 종료되어도 메모리 공간에 남아있음. 전역 변수처럼 프로그램이 끝날 때까지 유효

register변수: CPU의 접근이 가장 빠른 메모리 공간. 크기가 제한되어 있어 요구가 충분히 무시될 수 있음


static 변수랑 전역 변수랑 별 차이 없는것 같은데, 어디서나 접근 가능한 전역 변수 쓰는게 유리한거 아님?

그리고 register 변수 설명이 좀 두루뭉술 해보이는데, 가장 빠른 메모리 공간이면 최대한 register 변수로 선언하는게 유리하단거 아님?



뒷장은 재귀적 함수 호출 나오는데 내일해야지


오늘 궁금한게 많음 답변좀 해주삼 ㅇㅅㅇ;;