位運算和排序

2021-09-12 10:34:27 字數 1076 閱讀 1864

原碼、反碼、補碼:

原碼:符號位加上真值的絕對值, 用第一位表示符號,0為正,1為負, 其餘位表示值。

正數的原碼、反碼、補碼都相同。

負數的反碼:原碼的符號位不變其餘位取反, 補碼:反碼加1。

位運算子:

&:按位與 ,都為1時為1,有乙個0就為0

|:按位或,有1為1,全0為0

~:按位非,按位取反

^:按位異或,相同為0,不同為1

<<:左移,左移n位就是乘以2的n次方,高位丟棄,低位補0。

>>:右移,右移n位就是除以2的n次方,低位丟棄,高位補0

注意:用位運算子進行運算時先轉成二進位制,再以補碼運算,最後再把補碼返回原碼。

位運算舉例:

輸入乙個位元組內的數(0-255),然後將該數轉換為二進位制數,然後將高四位和第四位互換

100。 二進位制原碼是 0110 0100補碼是0110 0100

第一步:100<<4 移之前0110 0100

移之後0100 0000

第二步:100>>4 移之前0110 0100

移之後0000 0110

0100 0000

0000 0110|

0100 0110

冒泡、選擇、插入排序:

氣泡排序:

思想:相鄰的兩個數依次進行比較,如果前者大,則互換位置,一趟下來之後,最大值就放在了最後一位,開始第二趟,依次比較相鄰的2個數,如果前者大,交換,以此類推,如果對n個數排序,n-1趟能排出結果。

選擇排序:

思想:假定本趟待排元素的第乙個是最小值,記錄這個值以及值的位置,拿這個記錄的值,依次與第2~n的數進行比較,一旦發現有比記錄的值小的數更新記錄的值以及位置,繼續往後比,直到最後乙個元素,然後與第乙個元素交換。

插入排序:

思想:把乙個待排元素與有序元素從後往前依次比較,如果待排元素小於某有序元素,二者交換,再與更小的元素比較,如果大於更小的元素或者已經交換到最小位置,結束本趟比較,開啟下一趟比較,比較方式同上。

位運算子和位運算

一 按位與 運算子 1 運算規則 參加運算的兩個 資料,按二進位進行 與 運算,如果兩個相應的二進位都為1,則該位的結果值為1,否則為0,即 0 0 0,0 1 0,1 0 0,1 1 1.2 用途 1 清零 運算物件 原來的數中為1的位,新數中相應位為0。2 取乙個數中某些指定位。如想要取乙個整數...

位運算和位移運算

按位與 按位或 按位取反 按位異或 左移 a 左移b位,最低位空出來的b位用0補齊 結果 位移數b作為2的冪次與運算元a相乘。帶符號右移 a b 將二進位制形式的a逐位右移b位,最高位空出來的b位用符號位補齊 結果 運算元a除以位移數b的2次冪 無符號右移 a b 將二進位制形式的a逐位右移b位,最...

邏輯運算和位運算

本文主要針對的是邏輯運算 和位運算 關於移位預算,現在對開發來說基本不用,就不說了。邏輯運算主要是針對多個boolean表示式來說的,即a 1 b 2這種,就是說邏輯運算子左右都是boolean型別的表示式,這裡!是個特例,它是一元運算子,只對右邊boolean表示式取反,即!ture 變成了fal...