본문 바로가기
반응형

C++93

C, C++ - 1 비트 개수 세기 (Bit Counter) C, C++ 전체 링크 삼성 C형 전체 링크 주어진 숫자에 대해 비트 단위로 1이 몇 개 인지 세는 함수를 만들어보자. 먼저 비트 단위로 출력하기를 이용하여 아래의 코드를 실행해보자. #include #include using namespace std; typedef long long int ll; template void printBitNumber(T number) { unsigned int bitSize = sizeof(number) * 8; T mask = (1ull) = 1; if (i % 8 == 7) printf(" "); } putchar('\n'); } int main(void) { ll bit = 1234123412341234123; printf("bit : "); printBitNumb.. 2023. 7. 29.
C, C++ - 비트 연산으로 2의 제곱수 처리하기 C, C++ 전체 링크 삼성 C형 전체 링크 2n 또는 2n - 1 판단하기. 숫자 x에서 -1을 하고 & 연산을 해서 0이 되면 2n이다. 그리고 x에서 +1을 하고 & 연산을 해서 0이 되면 2n - 1이다. 2n은 bit로 나타내면 하나의 bit만 1이기 때문에 이런 규칙이 생긴다. 0100 0000 = 64 0011 1111 = 63 ------------------ 0000 0000 = 64 & 63 = 0 마찬가지로 2n - 1도 연산을 해보면 쉽게 규칙을 파악할 수 있다. 0111 1111 = 127 1000 0000 = 128 ------------------- 0000 0000 = 127 & 128 = 0 #include int main(void) { int x; /* 주어진 부호 없는 .. 2023. 7. 29.
C, C++ - 임시 변수 없이 변수 바꾸기 (Swap Two Numbers without using the Third Variable) C, C++ 전체 링크 삼성 C형 전체 링크 long long int 타입 a, b 변수를 교체해보자. #include typedef long long int ll; int main(void) { ll a = 1234123412341234; ll b = 5678567856785678; printf("a : %lld\n", a); printf("b : %lld\n", b); putchar('\n'); ll tmp = a; a = b; b = tmp; printf("a : %lld\n", a); printf("b : %lld\n", b); return 0; } 값이 잘 변경된 것을 알 수 있다. XOR Swap 알고리즘을 이용하면 변수를 추가하지 않고 아래와 같이 간결하게 두 변수를 교환할 수 있다. a ^.. 2023. 7. 29.
C, C++ - 비트 연산 기본 매크로 함수 (bit macro : get, set, clear, toggle, check) C, C++ 전체 링크 삼성 C형 전체 링크 비트 연산 기본에 대해서 알아보자. (get, set, clear, toggle, check) - 비트 1개 연산 - 연속된 여러 비트 연산 - 비트 마스크 연산 비트 1개 연산 다음의 코드를 실행시켜보자. #include typedef long long int ll; #define SET_BIT(value, n) ((value) |= (1ull 2023. 7. 29.
C, C++ 링크 A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 구현 C++ split 함수 구현C 언어에서 날짜 구하기소수 판단 함수에라토스테네스의 체 - 소수 판단셔플 Shuffle - 카드 섞기 알고리즘제곱근 Square root : 바빌로니아 법(The Babylonian Method)원주율 Pi : 라이프니츠 공식 (Leibniz Formula for π)100명의 죄수가 살아남을 확률을 높이기 위한 루프 전략 (Loop Strategy)N x N 2차원 배열 뒤집기, 회전하기 (Rotate, Flip 2D Array)여러가지 나머지 연산 방법 테스트 비트 단위로 출력하기 (Print Bit)비트 on / off비트 연산 기본 매크로 함수 (bit macro : get, set, clear,.. 2023. 7. 29.
C, C++ - 비트 단위로 출력하기 (Print Bit) C, C++ 전체 링크 삼성 C형 전체 링크 아래와 같이 %x 옵션을 이용하면 4비트 (0 ~ F)로 값을 출력할 수 있다. #include typedef unsigned long long int ull; int main(void) { ull h = 1023; printf("0x%08X\n", h); return 0; } 이제 변수가 주어질 때, 1 비트 단위로 출력하는 함수를 만들어보자. printBitNumber를 템플릿을 이용해서 만들고 mask를 이용해 최상위 비트부터 하나씩 내려가면서 출력한다. // signed에서 error 발생 #include typedef unsigned char uc; typedef unsigned short us; typedef unsigned int ui; typed.. 2023. 6. 3.
C++ - 튜플로 여러 값 반환하기 (Returning Multiple Values Using Tuple) C, C++ 전체 링크 참고 - 포인터와 참조자 - C# 튜플로 여러 값 반환하기 어떤 함수를 호출해서 이름, 나이, 몸무게를 알고 싶다고 하자. C에서는 포인터를 이용하여 여러 값을 얻을 수 있다. (당연히 string은 사용하지 못한다.) void getInfo(string* name, int* age, int* weight) { *name = "blood"; *age = 20; *weight = 70; } 그리고 getInfo에 변수의 주소를 넘겨주면 된다. getInfo(&name, &age, &weight); C++이라면 참조자를 이용할 수 있다. void getInfo(string& name, int& age, int& weight) { name = "blood"; age = 20; weigh.. 2023. 4. 15.
비트 on / off C, C++ 전체 링크 삼성 C형 전체 링크 참고 - 비트 단위로 출력하기 구현은 아래를 참고하자. #include template void printBitNumber(T number) { unsigned int bitSize = sizeof(number) * 8; T mask = (1ull) = 1; if (i % 8 == 7) printf(" "); } putchar('\n'); } int main(void) { int x; printf("제일 오른쪽 1-비트 끄기 (ex: 01011000 => 01010000)\n"); x = 2152; printBitNumber(x); x &= (x - 1); printBitNumber(x); printf("===============================.. 2023. 1. 24.
N x N 2차원 배열 뒤집기, 회전하기 (Rotate, Flip 2D Array) C, C++ 전체 링크 2차원 배열의 크기가 N x N인 경우 배열을 뒤집거나 회전하는 코드는 다음과 같다.#include #define SIZE (5)int map[SIZE][SIZE];void init(int map[SIZE][SIZE]){ int count = 1; for (int i = 0; i  원본 배열은 다음과 같다.Original 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 각 함수의 결과는 다음과 같다.Flip Up / Down21 22 23 24 25 16 17 18 19 20 11 12 13 14 15 06 07 08 09 10 01 02 03 04 05 Flip Left / Right05 04 .. 2022. 11. 27.
반응형