비트 조작 유틸로 만들기

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, 101);
    MH_UTIL::printBitConsol(num);
    printf("Update Bit Test : updateBit(num, 20, 1)\n");
    num = MH_UTIL::updateBit(num, 201);
    MH_UTIL::printBitConsol(num);
    printf("Update Bit Test End\n");
    puts("");        
 
    return 0;
}
cs


결과









728x90
반응형