C의 비트 테스트 기능
소개
C에서 많은bit twiddling 식이나 함수를 제공하는 사이트가 많이 있지만 간결한 비트 테스트 함수 집합을 제공하는 사이트를 찾지 못했습니다. 그래서 여기에 제가 작성한 집합이 있습니다. (이들은 part의 cdecl으로 사용됩니다.)
기능
n에 0 또는 1비트가 설정되어 있습니까?
bool is_01_bit( uint64_t n ) {
return (n & (n - 1)) == 0;
}
n은 정확히 1비트가 설정되어 있습니까?
bool is_1_bit( uint64_t n ) {
return n != 0 && is_01_bit( n );
}
n은 set에 설정된 비트 중에서 0개 이상의 비트가 설정되어 있습니까?
bool is_0n_bit_only_in_set( uint64_t n, uint64_t set ) {
return (n & set) == n;
}
n은 set에 설정된 비트 중 정확히 1비트 세트를 가지고 있습니까?
bool is_1_bit_in_set( uint64_t n, uint64_t set ) {
return is_1_bit( n & set );
}
참고: 설정되지 않은 n에 설정된 다른 비트가 있을 수 있습니다. 이 함수는 정확히 1개가 세트에 있는지 여부만 테스트합니다.
n은 set에 설정된 비트 중에서 정확히 1비트만 설정되어 있습니까?
bool is_1_bit_only_in_set( uint64_t n, uint64_t set ) {
return is_1_bit( n ) && is_1_bit_in_set( n, set );
}
n은 0인가, set에 설정된 비트 중 정확히 1비트만 설정되어 있는가?
bool is_01_bit_only_in_set( uint64_t n, uint64_t set ) {
return n == 0 || is_1_bit_only_in_set( n, set );
}
n은 set에 설정된 비트 중에서 1개 이상의 비트가 설정되어 있습니까?
bool is_1n_bit_only_in_set( uint64_t n, uint64_t set ) {
return n != 0 && is_0n_bit_only_in_set( n, set );
}
Reference
이 문제에 관하여(C의 비트 테스트 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pauljlucas/bit-testing-functions-in-c-5bfi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)