비트 조작 유틸로 만들기
2015. 7. 13. 11:49ㆍ엘키스공간/엘키스코딩공방
728x90
728x90
서론
비트 조작은 어렵다! 하지만 알아두면 쉽다!
유틸로 사용해보기 위해 만들어보았다.
소스
헤더
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #pragma once /* Utility using namespace */ namespace MH_UTIL { // Get Bit bool getBit(int num, int i); // Set bit int setBit(int num, int i); // Clear bit int clearBit(int num, int i); // Update bit int updateBit(int num, int i, int v); // Print Consol bit void printBitConsol(int num); } | cs |
cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include "stdafx.h" #include "MH_UTIL.h" namespace MH_UTIL { // Get Bit bool getBit(int num, int i) { return (num&(1<<i)) != 0; } // Set bit int setBit(int num, int i) { return num|(1<<i); } // Clear bit int clearBit(int num, int i) { int mask = ~(1<<i); return num&mask; } // Update bit int updateBit(int num, int i, int v) { int mask = ~(1<<i); return (num&mask) | (v<<i); } // Print bit Consol void printBitConsol(int num) { for (int i = 0; i < 32; i++) { printf("%d", MH_UTIL::getBit(num, 32 - i - 1)); } puts(""); } } | cs |
메인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | // Bit.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h" #include "MH_UTIL.h" int _tmain(int argc, _TCHAR* argv[]) { // Print Test printf("Print Test 0 ~ 9\n"); for (int i = 0; i < 10; i++) { MH_UTIL::printBitConsol(i); } printf("Print Test End\n"); // Print Consol 10 int num = 10; printf("Print Bit integer 10\n"); MH_UTIL::printBitConsol(num); puts(""); // Set Bit Test printf("Set Bit Test : setBit(num, 0)\n"); num = MH_UTIL::setBit(num, 0); MH_UTIL::printBitConsol(num); printf("Set Bit Test End\n"); puts(""); // Clear Bit Test printf("Clear Bit Test : clearBit(num, 1)\n"); num = MH_UTIL::clearBit(num, 1); MH_UTIL::printBitConsol(num); printf("Clear Bit Test End\n"); puts(""); // Update Bit Test printf("Update Bit Test : updateBit(num, 10, 1)\n"); num = MH_UTIL::updateBit(num, 10, 1); MH_UTIL::printBitConsol(num); printf("Update Bit Test : updateBit(num, 20, 1)\n"); num = MH_UTIL::updateBit(num, 20, 1); MH_UTIL::printBitConsol(num); printf("Update Bit Test End\n"); puts(""); return 0; } | cs |
결과
728x90
반응형
'엘키스공간 > 엘키스코딩공방' 카테고리의 다른 글
[잡다한코딩] Map insert로 뭘 쓰지? (1) | 2016.12.21 |
---|---|
[잡다한코딩] 조건에 따라 enum 값 리턴하는 람다펑션 만들어보기 (4) | 2016.12.11 |
counted_ptr 구현 (0) | 2015.07.28 |
더블 링크드 리스트 (1) | 2015.06.21 |
싱글 링크드 리스트 (0) | 2015.06.21 |
큐로 메시지 큐 구현하기 (0) | 2015.06.10 |
큐 구현하기 (0) | 2015.06.10 |