位運算 c語言作業 第四次

2021-09-10 07:53:11 字數 1542 閱讀 6485

整數在計算機中用二進位制的位來表示,c語言提供一些運算子可以直接操作整數中的位,稱為位運算,這些運算子的運算元都必須是整型的。參與運算的兩數各對應的二進位相運算,均以補碼出現。 

& 按位與, | 按位或 , ^ 按位異或

and (位與&) or ( 位或| ) xor ( 位異或^ )

1 & 1 = 1, 1 | 1 = 1, 1 ^ 1 = 0

1 & 0 = 0, 1 | 0 = 1, 1 ^ 0 = 1

0 & 1 = 0, 0 | 1 = 1, 0 ^ 1 = 1

0 & 0 = 0, 0 | 0 = 0, 0 ^ 0 = 0

~是一元運算子,用來對乙個二進位制數按位取反,即將0變1,將1變0

移位運算子是位操作運算子的一種,可以在二進位制的基礎上對數字進行平移。按照平移的方向和填充數字的規則分為三種:<>(帶符號右移)和》(無符號右移)。

左移運算是將乙個二進位制位的運算元按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0。右移運算是將乙個二進位制位的運算元按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0,或者補符號位。

在移位運算時,byte、short和char型別移位後的結果會變成int型別,對於byte、short、char和int進行移位時,編譯器未做任何優化的情況下(優化後不可預期),規定實際移動 的次數是移動次數和32的餘數,也就是移位33次和移位1次得到的結果相同。移動long型的數值時,規定實際移動的次數是移動次數和64的餘數,也就是 移動66次和移動2次得到的結果相同。

需要移位的數字 << 移位的次數

在數字沒有溢位的前提下,對於正數和負數,左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方。

需要移位的數字 >> 移位的次數

右移一位相當於除2,右移n位相當於除以2的n次方。

按二進位制形式把所有的數字向右移動對應位數,低位移出(捨棄),高位的空位補零。對於正數來說和帶符號右移相同,對於負數來說不同。

解決該題的四種方法(方法三還沒懂?)

第31行要取反,應該用~取反,再與1位與。如果先與1位與,再取反,0取反結果是-1,1取反結果是-2,因為符號~包括符號位它也會取反。

該題首位和末尾我自己做了個特殊處理

之前想的時候是想同過每位乘上2的n次方把b算出來。但通過位運算可以比較簡便的處理這個問題。

該題解法的亮點是如何正序輸出

#include  "stdio.h"

main()

printf("\bb\n");

}

C語言 第四次作業

作業要求一 70分 實踐最簡答的專案wordcount,必須完成其中的基本功能,若可以完成其他功能給予加分。完成後請將你的設計思路 主要 寫在本次作業部落格裡。真的迷茫,老師辛苦了。要求二 學習總結和進度 1 git 2 點評3個同學的本週作業。王姝雯 孫銘婧 張心悅 3 請用 和折線圖呈現你本週 ...

c語言第四次作業

1.實驗 1 include 2 include 3 include 4 5int main 620 if sum i 23 2425 return0 26 2 設計思路 1 文字描述 第一步,定義n。第二步,利用乙個while語句和乙個for迴圈輸出水仙花數。2 流程圖 3.本題除錯過程碰到問題及...

C語言第四次作業

這個作業屬於哪個課程 計科二班 這個作業要求在 作業要求 這個作業的目標 對於自定義函式的應用練習,完成pta作業 學號20208984 1.1 求組合數 題目內容 1.1.1資料處理 資料表達 定義了整形n,m,浮點型c,i,result 1 資料處理 使用了for迴圈以及兩個表示式c fact ...