在匯編語言中有直接對位進行操作的指令,如置位、復(fù)位、位取反、測試某一位等,這對于硬件操作十分方便,在C語言中盡管也提供了一些位操作手段,如按位與、按位或、按位取反等,但它們是對一個字節(jié)進行操作,如要對具體的一位操作,仍舊不方便,以下給出了一些函數(shù),可以模仿匯編語言的一些位操作功能。
#define uchar unsigned char
/*測試變量某一位是否為‘1’,是返回真,否返回假,num為待測試的數(shù),bit為位數(shù),其值從0到7,下同*/
uchar bittest(uchar num,uchar bit)
{ if(num》》bit&0x01==1)
return 1;
else
return 0;
}
uchar bitclr(uchar num,uchar bit) /*清除某一位*/
{
uchar bit_value[]={1,2,4,8,16,32,64,128};
return num&~bit_value[bit];
}
uchar bitset(uchar num,uchar bit) /*設(shè)置某一位*/
{
uchar bit_value[]={1,2,4,8,16,32,64,128};
return num|bit_value[bit];
}
uchar bitcpl(uchar num,uchar bit) /*取反某一位*/
{
uchar bit_value[]={1,2,4,8,16,32,64,128};
if(num》》bit&0x01==1)
return num&~bit_value[bit];
else
return num|bit_value[bit];
}
/*以下主程序演示,調(diào)用時,可以直接給出數(shù)值,也可以給出變量名*/
void main(void)
{
uchar xx=0xfe;
xx=bitset(xx,0);
printf(“The set out is %x ”,xx);
printf(“The clr out is %x ”,bitclr(255,0));
printf(“The test out is %x ”,bittest(0xff,0));
printf(“The cpl out is %x ”,bitcpl(0x00,7));
}
-
C語言
+關(guān)注
關(guān)注
180文章
7618瀏覽量
138654 -
程序
+關(guān)注
關(guān)注
117文章
3806瀏覽量
81708 -
運算
+關(guān)注
關(guān)注
0文章
132瀏覽量
25924
發(fā)布評論請先 登錄
相關(guān)推薦
深入理解C語言:循環(huán)語句的應(yīng)用與優(yōu)化技巧

AWTK-WEB 快速入門(1) - C 語言應(yīng)用程序

技術(shù)干貨驛站 ▏深入理解C語言:掌握C語言條件判斷,從if到switch的應(yīng)用

C語言指針運算符詳解
C語言與Java語言的對比
技術(shù)干貨驛站 ▏解鎖C語言高效編程秘訣:深入解析運算符與優(yōu)先級

技術(shù)干貨驛站 ▏深入理解C語言:編程高手必備,全方位解析運算符的核心技能!

C語言指針詳細解析
hex文件如何查看原c語言代碼
c語言從右到左的運算符有哪些
技術(shù)干貨驛站 ▏深入理解C語言:掌握程序結(jié)構(gòu)知識

C語言基礎(chǔ)-為什么要使用C?
C語言變量應(yīng)用詳解

評論