2016년 4월 3일 일요일

Bit Calculation Marco


  • Source

#pragma once

// 한 비트 클리어
#define clear_bit(data, loc) ( (data) &= ~( 0x1<<(loc) ) )
// 연속된 여러 비트 클리어
#define clear_bits(data, area, loc) ( (data) &= ~( (area)<<(loc) ) )

// 한 비트 설정
#define set_bit(data, loc) ( (data) |= 0x1<<(loc) )

// 연속된 여러 비트 설정
#define set_bits(data, area, loc) ( (data) |= (area)<<(loc) )

// 한 비트 반전
#define invert_bit(data, loc) ( (data) ^= (0x1<<(loc)) )

// 연속된 여러 비트 반전
#define invert_bits(data, area, loc) ( (data) ^= ( (area)<<(loc) ) )

// 비트 검사
#define check_bit(data, loc) ( (data) & 0x1<<(loc) )

// 비트 추출
#define extract_bits(data, area, loc) ( ( (data)>>(loc) ) & (area) )




◈ reference
 Book : 프로그래머가 몰랐던 멀티코어 CPU 이야기

댓글 없음:

댓글 쓰기