首頁 繪圖設計 工作閒聊 比賽活動 美術討論 標籤 圖片
C/C++ bit-op test_bit,set_bit,clear_bit like linux kernel
Type(Type) 2016/9/15 08:04

C/C++ bit-op test_bit,set_bit,clear_bit like linux kernel

You might love the bit operation APIs in "bitops.h" @ Linux kernel driver and 'd like to use them as well in user space C/C++ applications and UEFI / DOS tools.Here comes 32-bit bit operations examples like the following:代碼:
/* Set __SHIFT bit */void set_bit(uint8_t __SHIFT, uint32_t *var_addr){    *(var_addr) |= ( 0x1UL << __SHIFT);}/* Clear __SHIFT bit */void clear_bit(uint8_t __SHIFT, uint32_t *var_addr){    *(var_addr) &= ~( 0x1UL << __SHIFT);}/* Test __SHIFT bit */uint8_t test_bit(uint8_t __SHIFT, uint32_t *var_addr){    return (*(var_addr) >> __SHIFT) & 0x1UL;}void main(void){    uint32_t a = 0x0000feef;    set_bit( 8,  &a);    printf("%s: 0x%x\n", __func__, a);    printf("%s: test bit 8 == %d\n", __func__, test_bit(8, &a));    clear_bit( 8,  &a);    printf("%s: 0x%x\n", __func__, a);    printf("%s: test bit 8 == %d\n", __func__, test_bit(8, &a));    return;}=============================$ ./a.outmain: 0xffefmain: test bit 8 == 1main: 0xfeefmain: test bit 8 == 0


(1,479 views)
[更多討論] 討論區 Windows, Linux, Perl, PHP, C/C++, Driver, Web 理論、應用、硬體、軟體


"C/C++ bit-op test_bit,set_bit,clear_bit like linux kernel" 傳統頁面(電腦版)

首頁 繪圖設計 工作閒聊 比賽活動 美術討論 標籤 圖片
傳統桌面版
© Vovo2000.com Mobile Version 小哈手機版 2019