簡體   English   中英

如何編輯無符號字符中的單個位

[英]How to edit single bits from an unsigned char

我的目標是編寫一個函數,該函數接收無符號字符作為輸入,並返回修改后的無符號字符作為輸出。

應修改char,以便將其前三位設置為零,其余部分保持不變。 下面編寫示例函數。

任何幫助是極大的贊賞。 對於有些不完整的問題表示歉意,這是我能提供的最准確的描述。

unsigned char Changebits(unsigned char b)
{
    //set the first three bits of the input to zeros (for example 10110111 -> 00010111)
    return //insert the modified unsigned char here
}

請閱讀有關C 語言中位操作的知識。因此,您的解決方案如下所示(假設為1個字節的char)

unsigned char Changebits(unsigned char b)
{
    return (b & 0x1Fu);
}
unsigned char Changebits(unsigned char b)
{
    return b&0x1F;
}

我假設您了解按位AND運算。

假設我們有10110111作為輸入。 要使前三個數字為0,我們可以簡單地對它進行按位處理,即一個數字在前三個位置包含0,在其余位置包含1(00011111)。

unsigned char Changebits(unsigned char b)
{
    unsigned char modifier = 31; //00011111in binary is equal to 11100000 in decimal
    return b & modifier; // in c '&' represents bitwise AND operation
}

定義修飾符的另一種很酷的方法是:

unsigned char modifier = (1<<5)-1; //using bitwise left shift

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM