목록char (2)
이쁜왕자 만쉐~~
배열의 크기는 1억개 ( 100 M ) 이고, 배열의 원소는 0 or 1 이다.. 다음 3 가지 방법중 가장 빠른 것은 무엇일까? 1. int 타입의 1억개 크기를 가지는 배열을 malloc 하여 사용한다. 2. char 타입의 1억개 크기를 가지는 배열을 malloc 하여 사용한다. 3. char 타입으로 1억/8 = 1250만개의 크기를 가지는 배열을 malloc 하여 bitwise 연산을 사용한다. 일단 배열의 크기는 당연히 1번은 400 MB, 2번은 100 MB, 3번은 12.5 MB 로 3번이 가장 적게 사용한다. 그러면, 속도는 어느게 제일 빠를까? 데이터는 워드 단위로 처리되니, 워드 크기를 가지는 int 타입이 제일 빠를까? 실제로 프로그래밍 해보면,, 3번이 제일 빠르고, 2번, 1번 ..
C 언어에서 int a; 로 선언하면,, a 는 당연히 signed int 이다.. 그러면,, char b; 로 선언하면,, b 는 signed 일까? 아니면 unsigned 일까? 정답은 '모른다' 이다.. 시스템에 따라서,, 컴파일러에 따라서 signed 일수도 있고,, unsigned 일수도 있다.. 그렇기에,, char 변수에 0~127 이외의 값을 넣을 때는 조심해야 한다.. char 로 선언된 변수에 -1 넣고,, 이틀동안 삽질했다.. 같은 소스코드가 두개의 프로젝트에 적용되는데,, 각각 다른 컴파일 환경에서 동작한다.. 그리고,, 한쪽 환경에서는 char => signed 로 처리되고,, 다른 환경에서는 char => unsigned 로 처리되는 것을 확인했다.. 좌절스럽다.. 여튼,, 이에..