C的位操作

一、傳統的C方式位操作:

1.基本操作:

   使用一個unsigned int變量來作爲位容器。

2.操作符:

|   按位或操作符:result=exp1|exp2;當exp1和exp2中對應位中至少有一個爲1時,result中對應位爲1,否則爲0。

&  按位與操作符::result=exp1&exp2;當exp1和exp2中對應位全爲1時,result中對應位爲1,否則爲0。

^  按位異或或操作符:result=exp1^exp2;當exp1和exp2中對應位不相同時,result中對應位爲1,否則爲0。

~  反轉操作符:將位容器中的所有位都反轉,1變爲0,0變爲1。

<< 按位左移操作符:exp<<n,將容器中所有的位向左移n位,空出的位用0填充。

>> 按位右移操作符:exp>>n,將容器中所有的位向右移n位,空出的位用0填充。

|=,&=,^= 分別對應|&^三種操作符的複合操作符。

3.常用操作

   這裏我們假設有一個result的unsigned int變量用來儲存32個學生的成績(通過和不通過分別用0和1),這樣result就有33位(result從右至左,從0開始計算位數,在這個例子中0位被浪費)。

(a) 將第27位設置爲及格(設作1)其他位不變:

   result|=(1<<27) //任意的位值與1作按位或操作其值爲1,而與0作按位與操作其值不變

(b) 將第27位設置成不及格(設爲0)。

   result&=~(1<<27) //任意的位值與0作按位與操作其值爲0,而與1作按位與操作其值不變

(c) 反轉第27位的值。

   result^=(1<<27) //任意的位值與1作按位異或操作其值爲1,而與0作按位異與操作其值不變

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章