pragma mark 位運算符練習1
pragma mark 概念
pragma mark 代碼
#include <stdio.h>
void printfBinay(int value);
int main()
{
#pragma mark 要求定義一個函數,傳入一個整數,輸出該整數的二進制
/*
要求定義一個函數,傳入一個整數,輸出該整數的二進制
%i %o %x
0000 0000 0000 0000 0000 0000 0000 1001 // 向右移31位
&0000 0000 0000 0000 0000 0000 0000 0001
// 1.讓9的二進制向右移31,就可以獲取9的最高位的二進制,然后讓9的二進制的最高位和1相與(&),那么久可以獲得9的最高位
// 2.讓9的二進制向右移30,就可以獲得9的二進制的第二位
// 3.以此類推,直到0位置
技巧
1.任何數與1相&都是那個數
2.利用位移取出每一位
*/
int num = 9;
printfBinay(9);
return 0;
}
void printfBinay(int value)
{
#pragma while循環
// // 1.定義變量需要向右移動的位數
// int offset = 31;
// // 2.通過循環取出每一位
// while (offset >=0) { // 循環的次數大于0 繼續向右移
// //
// int result = (value >> offset) & 1 ; // 取出最高位
// printf("%i",result);
// // 3.每次取出一位數就讓控制右移的變量-1
// offset --;
// if ((offset+1) % 4 == 0) {
// //打一個空格
// printf(" ");
// }
//
// }
// printf("\n");
#pragma mark for循環
for (int i = 31; i>=0; i--) {
int result = (value >> i) & 1 ; // 取出最高位
printf("%i",result);
if (i % 4 == 0) {
//打一個空格
printf(" ");
}
}
printf("\n");
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。