1、編寫函式:
unsigned int reverse_bit(unsigned int value);
這個函式的返回值value的二進位制位模式從左到右翻轉後的值。
如:在32位機器上25這個值包含下列各位:
00000000000000000000000000011001
翻轉後:(2550136832)
10011000000000000000000000000000
程式結果返回:
2550136832
1、reverse向右移動,如0000 0000 0000 0000
2、num>>bit 這裡是取num的每乙個二進位制的值,如25 0000 0000 0001 1001 &1就是取第一位
3、然後或給reverse reverse就成了0000 0000 0000 0001
4、回到第一步,reverse右移,reverse 0000 0000 0000 0010 ——> 0000 0000 0000 0011
5、總共移動32次就翻轉完成
//c語言
#define _crt_secure_no_warnings
#include#includevoid reverse_bit(unsigned int num)
printf("\n");
printf("%u翻轉後的二進位制為:",num);
unsigned int reverse = 0;
for (unsigned int bit = 0; bit < 32; ++bit)
printf("\n");
printf("現在的數為:%u\n",reverse); }
void main()
reverse_bit(input);
break;
} system("pause");
}
2.程式設計實現:
一組資料中只有乙個數字出現了一次。其他所有數字都是成對出現的。
請找出這個數字。(使用位運算
)這裡使用異或運算子。
^:不同為1 ,相同為0
它的特點就是異或乙個數兩次等於沒有異或。
如 二進位制就是
然後 1^2-->01^10-->11-->11^10-->01-->01^11-->10-->10^11-->01
這樣就找到了單獨的數
//c語言
#define _crt_secure_no_warnings
#include#includevoid main() ;
int temp = 1;
while (temp<9)
printf("單神數是%d\n",arr[0]);
system("pause");
}
3.寫乙個函式返回引數二進位制中 1 的個數
比如: 15 0000 1111 4 個 1
程式原型:
int count_one_bits(unsigned int value)
//c語言
void to_count_one_bits(int num)
printf("%d",(num>>bit)&1);
++bit;
}printf("\n");
printf("%d的二進位制1的個數為:%d\n",num,count);
}
4.獲取乙個數二進位制序列中所有的偶數字和奇數字,分別輸出二進位制序列。
//c語言
void to_show_odd_even(int num)
printf("\n");
printf("%d的奇數字是:",num);
bit = 1;//初始化bit
while (bit<32)
printf("\n");
}
C語言 運算子與 運算子
我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...
C語言 運算子和 運算子
變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...
擴充套件運算子的運用
es5 的寫法 函式呼叫 function f x,y,z var args 0 1,2 f.null args es6的寫法 function f x,y,z let args 0 1,2 f args es5 的寫法 math.max.null,14,3,77 es6 的寫法 math.max ...