整理筆試過程中不熟悉的知識點(1)

2021-10-05 13:28:41 字數 1711 閱讀 5366

如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0

應用:(1)清零

若想對乙個儲存單元清零,即使其全部二進位制位為0,只要找乙個二進位制數,其中各個位符合一下條件:

原來的數中為1的位,新數中相應位為0。然後使二者進行&運算,即可達到清零目的。

a 00101011

b 10010100

c 00000000 //c = a & b

(2)取乙個數中某些指定位

若有乙個整數a(2byte),想要取其中的低位元組,只需要將a與8個1按位與即可。

a 00101100 10101100

b 00000000 11111111

c 00000000 10101100 //c = a & b

(3)保留指定位:

a 01010100

b 00111011

c 00010000 //c = a & b

兩個相應的二進位制位中只要有乙個為1,該位的結果值為1。借用邏輯學中或運算的話來說就是,一真為真

應用:將乙個資料的某些位定值為1

a 00110000

b 00001111

c 00111111 //c = a | b

若參加運算的兩個二進位制位值相同則為0,否則為1

應用:(1)使特定位翻轉 找乙個數,對應x要翻轉的各位,該數的對應位為1,其餘位為零,此數與x對應位異或即可。

例:x=10101110,使x低4位翻轉,用x ^ 0000 1111 = 1010 0001即可得到。

(2)與0相異或,保留原值 ,x ^ 0000 0000 = 1010 1110。

(3)交換a和b

不用臨時變數,交換兩個值

計算前:

a=3,即011(2);b=4,即100(2)

計算過程:

a=a ^ b; //即111 = 011 ^ 100

b=b ^ a; //即011 = 100 ^ 111

a=a ^ b; //即100 = 111 ^ 011

計算後:

a=100(2)即 4 ;b = 011(2)即 3;

如果兩個不同長度的資料進行位運算時,系統會將二者按右端對齊,然後進行位運算。

以「與」運算為例說明如下:我們知道在c語言中long型佔4個位元組,int型佔2個位元組,如果乙個long型資料與乙個int型資料進行「與」運算,右端對齊後,左邊不足的位依下面三種情況補足,

(1)如果整型資料為正數,左邊補16個0。

(2)如果整型資料為負數,左邊補16個1。

(3)如果整形資料為無符號數,左邊也補16個0。

如:long a=123;int b=1;計算a & b。

a&b

a 0000 0000 0111 1011

b 0000 0000 0000 0001

= 0000 0000 0000 0001

如:long a=123;int b=-1;計算a & b。

a&b

a 0000 0000 0111 1011

b 1111 1111 1111 1111

= 0000 0000 0111 1011

如:long a=123;unsigned int b=1;計算a & b。

a&b

a 0000 0000 0111 1011

b 0000 0000 0000 0001

= 0000 0000 0000 0001

菜鳥進擊過程中忽略的知識點

程式設計實踐中經常會忽略一些比較小的知識點,歸根究底還是基礎不夠紮實,因此把這些零散的內容總結一下來夯實基礎 知識改變命運,為了大電視 大沙發 大衛生間 halcon與c 聯合程式設計時,利用輸出流輸出halcon型別的變數,此時需要進行強制型別轉換 若函式的返回型別為byte 取值範圍0 255 ...

筆試中遇到的知識點小結(1)

這兩天啃各公司的校招筆試題目,那些知識上的漏洞和忘記的部分能彌補多少就彌補多少,很多細節的問題,就不直接貼上資料和部落格了,在此一一存為連線記錄一下。1 關於字尾表示式,也就是逆波蘭表示式,這是編譯原理裡學過的,我都忘記了,維基百科中的例子一看就懂 2 今天還看到了關於sizeof很細節的乙個東西,...

Android開發過程中的幾個小知識點

1.在程式的manifest裡面對應的activity裡面新增android windowsoftinputmode adjustresize 屬性,可以實現開啟輸入法時,介面自動上移,不被輸入法遮蓋。2.新增按鈕的按下效果時,可以在drawable資料夾下新建乙個xml檔案,裡面編寫乙個selec...