오픈소스 SW란 오픈소스 SW는 무조건 무료가 아니라 법으로 저작권이 보호된다. 단순히 공개되었다는 이유로 오픈소스가 아니라, 해당 SW를 사용하고, 수정하고, 배포할 수 있어야 진짜 Opensource SW가 된다. 저작권은 자연발생하지만, 특허는 자연발생 하지 않는다. 오픈소스 SW도 저작권은 존재한다. 저작권은 있지만, 그걸 더 적극적으로 지키기 위해 저작권 등록을 하는 것이다. 라이선스 라이선스는 오픈소스 SW의 사용 계약이다. 의무사항이 존재할 수도, 없을 수도 있다. 보통은 원저작자를 밝히거나 해당 오픈소스 SW로 만든 소스코드도 똑같이 공개해야 하는 등의 의무사항이 있다. 사유(독점) 소프트웨어 사유 소프트웨어는 소스코드를 사는 것이 아니라, 바이너리를 구매하여 사용하는 것이다. 즉, 소스코..
양수와 음수 MSB가 0이면 양수, 1이면 음수이다. (MSB는 부호를 나타냄) 0010 - 2 0110 - 6 1110 : -2 ※ 모든 비트가 0이면 0, 모든 비트가 1이면 -1이다. 이건 그냥 외워두기 2의 보수 - 컴퓨터가 음수를 표현하는 방법 어떤 양수의 음수 형태를 구하려면 0과 1을 반대로 바꿔주고, 1을 더하면 된다. (2의 보수) # 011010 = +26 의 보수는? (-26을 binary로 나타내면?) 011010 -> 100101 -> 100110 # 100110 = -26 수의 범위 w개의 비트가 있다면 다음과 같은 범위의 수를 나타낼 수 있다. unsigned : 0 ~ 2^w - 1 signed : -2^(w-1) ~ 2^(w-1) - 1 Overflow Unsigned Bi..
Static 전역 변수에 static이 붙으면 해당 파일에서만 사용하는 변수임을 명시적으로 나타낸다. // main.c static int x = 1; int main() { return 0; } // sub.c static int x = 2; 지역 변수에 static이 붙으면 stack 영역에 생기는 게 아니라 data 영역에 생긴다. 데이터가 유지된다는 뜻이다. int foo() { static int x = 1; x++; print(x); } int bar() { static int x = 2; x++; print(x); } - 두 static x 변수는 data 영역에 저장되지만, 여전히 block 안에서만 접근이 가능하다. 그렇기 때문에 static끼리 이름이 같아도 된다. - foo()를 1번..
GCC 주요 옵션 -o : 컴파일 결과물의 이름을 지정할 수 있다. # a.out 파일이 생성된다. gcc hello.c # hello 파일이 생성된다. gcc hello.c -o hello -w : 모든 경고 메시지를 숨긴다. -Wall : 모든 경고 메시지를 보여준다. -Werror : 경고 메시지를 에러로 출력한다. gcc -w hello.c gcc -Wall hello.c gcc -Werror hello.c -On (n은 정수) -O 옵션은 컴파일러의 최적화 정도를 결정한다. -O0 (default) : 최적화를 하지 않는다. -O1 (or -O) : 1단계 최적화 -O2 : 2단계 최적화 -O3 : 3단계 최적화 gcc -O3 -o hello hello.c -g -g 옵션은 소스 레벨에서 디버깅..