본문 바로가기
반응형

C++93

C++ - 정수를 IP로 변환하기 (IP Converter for IPv4, IPv6, Integer, in_addr, in6_addr) C, C++ 전체 링크 참고 - https://www.vultr.com/resources/ipv4-converter/ - https://regexr.com/ - 연산자 오버로딩을 이용하여 구조체 출력하기 - IPv4 Invalid Check - IPv6 Invalid Check (+ 축약형) - Integer to IPv4 String - IPv4 String to Integer - IPv4 String to Integer / Integer to IPv4 String with - in_addr to IPv4 String / IPv4 String to in_addr with - in6_addr to IPv6 String / IPv6 String to in6_addr with - IPv4 to IPv6 wi.. 2023. 11. 28.
C++ - 연산자 오버로딩을 이용하여 구조체 출력하기 (cout with overloading) C, C++ 전체 링크 C++에서는 2023. 11. 22.
C++ - map, functional로 함수 호출하기 C, C++ 전체 링크 string 명령어로 주어진 함수를 호출한다고 가정해 보자. 예를 들어 test2 함수를 호출하려면 아래와 같이 선언한다. string cmd = "test2"; if / else를 이용하여 아래와 같이 함수를 호출할 수 있다. #include #include using namespace std; void test1() { printf("%s\n", __FUNCTION__); } void test2() { printf("%s\n", __FUNCTION__); } void test3() { printf("%s\n", __FUNCTION__); } int main(void) { string cmd = "test2"; if (cmd.compare("test1") == 0) { test1.. 2023. 11. 22.
C++ - 폴더, 파일 관리 함수 정리 with sys/stat.h, dirent.h, fstream C, C++ 전체 링크 참고 - Window Visual Studio에서 폴더의 모든 파일 통합하기 - 폴더, 파일 확인 함수 - 지정한 경로의 폴더와 파일을 가져오는 함수 - 지정한 경로의 모든 폴더와 파일을 가져오는 함수 (recursive) - 파일 존재 여부 확인 - 파일 확장자 확인 - 파일 create, read, update - 파일 delete - 폴더 생성 - 하위 폴더 포함하여 모든 폴더 만들기 (recursive, mkdir -p 옵션) - 폴더 삭제 (빈 폴더인 경우, rmdir) - 폴더 삭제 (하위 폴더, 파일 모두 포함, rm -r) 테스트는 replit에서 가능하다. 폴더, 파일 확인 함수 #include #include #include using namespace std; .. 2023. 9. 9.
여러가지 나머지 연산 방법 테스트 C, C++ 전체 링크 1. % 사용 2. 비트연산 사용 (2의 배수) 3. / 를 이용하여 다시 계산하기 #include #include #include typedef unsigned long long int ull; #define DIVISOR (1024) void remainderTest1(ull testcase[], ull answer[]) { for (int i = 0; i < 10000; i++) { ull ans = testcase[i] % DIVISOR; if (ans != answer[i]) printf("Fail!!\n"); } } void remainderTest2(ull testcase[], ull answer[]) { for (int i = 0; i < 10000; i++) { u.. 2023. 8. 15.
C, C++ - 비트 교환 (Change Some Bits) C, C++ 전체 링크 삼성 C형 전체 링크 참고 - 비트 연산 기본 매크로 함수 - 비트 단위로 출력하기 1. char 타입 4bit 교환 2. 4bit 단위로 교환 3. 1bit 교환 char 타입 4bit 교환 char는 1byte = 8bit이므로 아래와 같이 4bit씩 양 옆으로 옮겨주면 비트가 교환된다. 예를 들어 char a = 0xA9라면 0x9A가 된다. typedef unsigned char uc; uc change4Bit(unsigned char value) { return (value > 4); } 전체 코드는 다음과 같다. #include typedef unsigned char uc; uc change4Bit(unsigned char value) { return (value > 4.. 2023. 8. 15.
C, C++ - 비트 뒤집기 (Reverse Bits) C, C++ 전체 링크 삼성 C형 전체 링크 참고 - 비트 단위로 출력하기 - 1 비트 개수 세기 1 비트 개수를 세는 방법을 응용하면 비트를 뒤집는 것도 가능하다. long, int, short, char ver 구현을 참고하자. #include typedef unsigned 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'); } ll getBitConvertLong(ll number) { ll convert = number; convert = (conve.. 2023. 7. 30.
C, C++ - 2차원 비트맵 뒤집기, 회전하기 (Rotate, Flip 2D Bitmap) C, C++ 전체 링크 삼성 C형 전체 링크 참고 - N x N 2차원 배열 뒤집기, 회전하기 (Rotate, Flip 2D Array) 아래의 char 배열은 2차원 배열로 16 x 2의 크기를 가진다. 하지만 비트 단위로 볼 때, char는 1byte이므로 16 x (2 x 8) = (16 x 16)인 정사각형의 비트맵으로 볼 수 있다. char bitmap[16][2]; N x N 2차원의 배열을 뒤집거나 회전하는 것은 간단하지만, 비트 연산의 경우 1 byte를 8개로 나눠서 구현해야 한다. 높이와 너비(x 8)가 같은 2차원 비트맵을 반전시키거나 회전시켜보자. bitmap의 SIZE = HEIGHT와 같다. 하지만 너비 WIDTH는 비트 단위로 계산하기 때문에 HEIGHT를 8로 나눈다. 그렇게.. 2023. 7. 30.
C, C++ - 1차원 비트 회전하기 (Rotate Bits of a Number) C, C++ 전체 링크 삼성 C형 전체 링크 비트를 회전시켜보자. 비트의 회전은 unsigned 타입만 가능하다. 먼저 아래 코드를 실행시켜 보자. #include template void printBitNumber(T number) { unsigned int bitSize = sizeof(number) * 8; T mask = (1ull) = 1; if (i % 8 == 7) printf(" "); } putchar('\n'); } template T getBitRotateLeft(T number, int n) { unsigned int bitSize = sizeof(number) * 8; return (number > (bitSize - n)); } template T getBitRotateRight.. 2023. 7. 30.
반응형