본문 바로가기

c/cpp4

비트마스크 bool 배열을 사용하는 것보다 비트 마스크를 사용한 방법이 더 편리한 경우가 있다. bool arr[10] = {true,false,true,false,true,false,true,false,true,false}; int bitmask = 341; //0b0101010101 위와 같이 10개의 진리 값을 배열과 비트 마스크를 사용해서 나타냈다고 하자. int형은 32비트 길이의 자료형이기 때문에 32개의 요소를 나타낼 수 있지만 첫 10개의 비트만 사용했다. 여기서 모든 진리 값을 반전한다고 해보자. 배열로 나타낸 경우 반복문을 이용해서 각각의 위치에 접근하여 하나하나 바꿔주어야 할 것이다. 그러나 비트 마스크를 사용하여 나타내었다면 NOT연산 하나로 끝낼 수 있다. // 반복문 for(int i=0;i 2021. 5. 8.
비트 연산 기본 이 글은 기본적인 비트 연산을 다룬다. L shift i 는 n을 오른쪽으로 i번 밀겠다는 의미이다. n = 0000101(2) 일 때 n >> 2는 0000001(2)이 된다. cout 2021. 5. 5.
C/C++서 양수 정수 나눗셈 결과의 올림 구하기 math.h의 ceil을 쓰면 간단하게 구할 수 있지만, 다르게도 한번 해보자. c = (a+b-1)/b; 확인해보자. #include int main(void){ int a[7] = {5,6,7,11,100,65,99}; int b[7] = {2,2,5,5,5,13,30}; for(int i=0;i 2021. 3. 1.
Scanf의 형식지정자에 대하여 scanf는 c언어를 배울 때 처음 배우는 입력 함수이다. 정수 하나를 입력받는다고 하자. int i; scanf("%d",&i); 위와 같을 꼴로 int 정수 하나를 입력받을 것이다. scanf에서 우리가 첫 파라메터로 입력한 값을 형식지정자라고 한다. 이 값을 잘 조정함으로 우리는 다양한 입력을 여러가지 방법으로 받을 수 있다. 예를들어 123456789 라는 입력이 있을 때 이 입력을 9자리의 정수가 아닌 3자리의 정수 3개로 받을 수 있다. #include int main(void){ int a,b,c; scanf("%3d%3d%3d",&a,&b,&c); printf("a:%d, b: %d, c: %d\n",a,b,c); } 이때 출력은 다음과 같다. > a:123, b: 456, c: 789 형.. 2021. 2. 26.