C語言面試題分類 位運算

2022-08-29 23:33:19 字數 856 閱讀 4270

1.不用臨時變數交換兩個整數。

a = a ^ b;

b = a ^ b;

a = a ^ b;

2.實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數。例如9的二進位制是1001,則輸出2。

int check_count_fun( int number)

return count;

}int main()

錯誤**如下:有符號數會造成死迴圈,負數移位最高位補1,保證負數。

int numberof1(int n)

n = n >> 1;

}return count;

}

3.判斷乙個數是否為 2 的 k 次方.

n & ( n - 1 ) 如果結果為 0, 是; 反之, 不是.

n & ( n - 1 ) 就是去掉最左邊乙個 1.

4.二進位制的反轉,可用於大小端的轉換:

如,將乙個64位整數轉化為網路位元組序?

#define hton64(x)  ((x>>56&0xff)|(x>>40&0xff00)|\  

(x>>24&0xff0000)|(x>>8&0xff000000))  |\

(x<<8&0xff00000000)|(x<<24&0xff0000000000)  |\

(x<<40&0xff000000000000)|(x<<56&0xff00000000000000)

C語言中位運算的相關面試題

企業面試題1.輸入乙個位元組內的數 0 255 和移動位數.輸出移位結果 要求迴圈移位 系統自帶的移位都是非迴圈的 int number 0,count 0 number 表輸入的數 count 表示移位數 printf please enter two number scanf d d numbe...

位運算面試題總結

題目鏈結 題目描述 給出兩個32位的整數n和m,以及兩個二進位制位的位置i和j。寫乙個方法來使得n中的第i到j位等於m m會是n中從第i為開始到第j位的子串 樣例n 10000000000 2,m 10101 2,i 2,j 6 返回n 10001010100 2class solution els...

位運算常見面試題

思路 兩個相同數異或結果為0 int a a b int b a b int a a b 思路 兩個相同數異或結果為0,讓陣列中所有的數字相異或,留下的結果即為出現 次的數字 int find one time number vector data return result 思路 兩個相同數異或結...