日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c的位操作

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c的位操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、位的概念
我們知道,在計算機中,一字節占8位(現在的某些電腦也有占16位的),這樣表示的數的范圍為0-255,
也即00000000-11111111。位就是里面的0和1。
char c=100;
實際上c應該是01100100,正好是64H。其中高位在前,低位在后。
| |
第7位 第0位

二、位邏輯運算符
符號 描述
& 按位與
| 按位或
^ 按位異或
~ 按位取反
表中除去最后一個運算符是單目運算符,其他都是雙目運算符。這些運算符只能用于整型表達式。位邏輯運算符通常用于對整型變量進行位的設置、清零、取反、以及對某些選定的位進行檢測。在程序中一般被程序員用來作為開關標志。較低層次的硬件設備驅動程序,經常需要對輸入輸出設備進行位操作。

& 運算的規則是當兩個位都為1時,結果為1,否則為0;
| 運算的規則是當兩個位都為0時,結果為0,否則為1;
^ 運算的規則是當兩個位相同時,結果為0,否則為1;
~ 運算的規則是當為1時結果為0,當為0時結果為1

1. 按位與運算 按位與運算符"&"是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
  例如:9&5可寫算式如下:?
00001001 (9的二進制補碼)&00000101 (5的二進制補碼) 
00000001 (1的二進制補碼)可見9&5=1。
按位與運算通常用來對某些位清0或保留某些位
例如:把a 的高八位清 0 , 保留低八位,?
可作 a&255 運算 ( 255 的二進制數為0000000011111111)。
應用:
a. 清零特定位 (mask中特定位置0,其它位為1,s=s&mask)
b. 取某數中指定位 (mask中特定位置1,其它位為0,s=s&mask)

2. 按位或運算 按位或運算符“|”是雙目運算符。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。
例如:9|5可寫算式如下:
00001001|00000101
00001101 (十進制為13)可見9|5=13
應用:
常用來將源操作數某些位置1,其它位不變。 (mask中特定位置1,其它位為0 s=s|mask)

3. 按位異或運算 按位異或運算符“^”是雙目運算符。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現,
例如:9^5可寫成算式如下:
00001001^00000101 00001100 (十進制為12)
應用:
a.?使特定位的值取反?(mask中特定位置1,其它位為0 s=s^mask)
b.?不引入第三變量,交換兩個變量的值?(設 a=a1,b=b1)
目標操作操作后狀態
a=a1^b1 a=a^b a=a1^b1,b=b1
b=a1^b1^b1 b=a^b a=a1^b1,b=a1
a=b1^a1^a1 a=a^b a=b1,b=a1

4. 求反運算 求反運算符~為單目運算符,具有右結合性。 其功能是對參與運算的數的各二進位按位求反。
例如:~9的運算為:?
~(0000000000001001)結果為:1111111111110110

三、位移運算符
符號 描述
<< 左移
>> 右移
5. 左移運算 左移運算符“<<”是雙目運算符。其功能把“<< ”左邊的運算數的各二進位全部左移若干位,由“<<”右邊的數指定移動的位數,?高位丟棄,低位補0。 其值相當于乘2。
例如: a<<4 指把a的各二進位向左移動4位。
如a=00000011(十進制3),左移4位后為00110000(十進制48)。

6. 右移運算 右移運算符“>>”是雙目運算符。其功能是把“>> ”左邊的運算數的各二進位全部右移若干位,“>>”右邊的數指定移動的位數。其值相當于除2。
  例如:設 a=15,a>>2 表示把000001111右移為00000011(十進制3)。
對于左邊移出的空位,如果是正數則空位補0,若為負數,可能補0或補1,這取決于所用的計算機系統。移入0的叫邏輯右移,移入1的叫算術右移,Turbo C采用邏輯右移。
main(){
 unsigned a,b;
 printf("input a number: ");
 scanf("%d",&a);
 b=a>>5;
 b=b&15;
 printf("a=%d b=%d ",a,b);
}

舉例:輸入一個整數,判斷這個數中有幾個二進制位1?例如輸入67,輸出結果應該為3。因為67的相應二進制數為00000000 01000011(0043H),有3個1出現。
分析:要判斷是不是1,只需要判斷該位與1與以后是不是1就可以知道。一個整數,判斷16次即可。

int main(int argc, char *argv[])
{
int num, i, cnt = 0;

scanf("%d", &num);

for(i = 0; i < 16; i++)
{
if(num & 1 == 1) /* 判斷最低位是不是1 */
cnt++;?
num >>= 1; /* num右移1位 */
}
printf("%d\n", cnt);

return 0;
}

這樣每次都判斷最低位是不是1,判斷完以后,讓前面的右移一位即可。 注:文章轉自http://blog.chinaunix.net/uid-26495963-id-3065899.html

總結

以上是生活随笔為你收集整理的c的位操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产最新自拍视频 | 欧美freesex黑人又粗又大 | 久久888| 韩国一区二区三区视频 | 成人免费入口 | 五月天激情四射 | 亚洲av无码久久精品狠狠爱浪潮 | 国产调教打屁股xxxx网站 | 国产精品16p | 日韩免费视频网站 | 国产午夜福利100集发布 | 中文字幕三级视频 | 国产69久久精品成人看 | 精品无码久久久久国产 | a级片在线免费看 | 久久精品无码专区免费 | 亚洲黄色大片 | 亚洲视频欧美视频 | 免费在线观看黄色片 | 永久在线视频 | 国产成年无码久久久久毛片 | 成人少妇影院yyyy | 99婷婷| 色综合网址 | 亚洲啪视频 | 奇米婷婷 | 亚洲一区欧洲二区 | 国产中文字幕一区二区三区 | 成在人线av| jizzjizz视频| 国产精品网站在线 | 一边摸一边做爽的视频17国产 | 欧美黑人精品一区二区不卡 | a级无遮挡超级高清-在线观看 | 91偷拍一区二区三区精品 | 精品国产乱码久久久久久蜜臀 | 涩里番在线观看 | 强开小受嫩苞第一次免费视频 | 国产一区欧美二区 | 不卡视频在线观看免费 | 免费视频日韩 | 亚洲 欧美 国产 另类 | 久久精品av| 亚洲久久一区 | 午夜视频精品 | 2021国产在线视频 | 久久99精品国产.久久久久 | 久久久一级 | 在线看黄网站 | 又黄又爽视频在线观看 | 欧美图片一区二区 | 日本免费黄色网址 | 一级片99| 香蕉视频网页版 | 日韩av三级在线 | 国产精品无码一区 | 夜夜添无码一区二区三区 | 永久免费看黄网站 | 日韩一级一级 | 深夜视频免费在线观看 | 国产在线视频网站 | 俄罗斯毛片基地 | 人人看人人干 | 潘金莲一级淫片免费放动漫 | 午夜精品成人毛片非洲 | 亚洲一二三 | 日韩av毛片在线观看 | 免费黄色小视频 | av体验区 | www.日韩在线 | 特级淫片aaaaaaa级附近的 | 久久av影视 | 日日夜夜免费精品 | 99九九精品视频 | 草草草在线观看 | 久久精品国产亚洲av久 | 91精品美女 | 欧美精品一区二区免费 | 91网站免费在线观看 | 精品国产aⅴ一区二区三区东京热 | 亚洲污片| 高跟鞋肉丝交足91 | 中出视频在线观看 | 中文字幕精品在线视频 | 国产va在线 | 卡通动漫精品一区二区三区 | 无人在线观看高清视频 单曲 | 午夜黄色在线观看 | 在线中文字幕亚洲 | 蜜桃久久久aaaa成人网一区 | 日韩成人精品一区二区 | 日韩伦理视频 | 中文字幕人妻一区二区三区在线视频 | 久草福利资源在线 | 欧美性爱视频久久 | 日韩视频在线一区二区 | 久久久久中文 | 天天做天天爱天天操 | 在线波多野结衣 |