pragma mark 位運(yùn)算符練習(xí)1
pragma mark 概念
pragma mark 代碼
#include <stdio.h>
void printfBinay(int value);
int main()
{
#pragma mark 要求定義一個(gè)函數(shù),傳入一個(gè)整數(shù),輸出該整數(shù)的二進(jìn)制
/*
要求定義一個(gè)函數(shù),傳入一個(gè)整數(shù),輸出該整數(shù)的二進(jìn)制
%i %o %x
0000 0000 0000 0000 0000 0000 0000 1001 // 向右移31位
&0000 0000 0000 0000 0000 0000 0000 0001
// 1.讓9的二進(jìn)制向右移31,就可以獲取9的最高位的二進(jìn)制,然后讓9的二進(jìn)制的最高位和1相與(&),那么久可以獲得9的最高位
// 2.讓9的二進(jìn)制向右移30,就可以獲得9的二進(jìn)制的第二位
// 3.以此類(lèi)推,直到0位置
技巧
1.任何數(shù)與1相&都是那個(gè)數(shù)
2.利用位移取出每一位
*/
int num = 9;
printfBinay(9);
return 0;
}
void printfBinay(int value)
{
#pragma while循環(huán)
// // 1.定義變量需要向右移動(dòng)的位數(shù)
// int offset = 31;
// // 2.通過(guò)循環(huán)取出每一位
// while (offset >=0) { // 循環(huán)的次數(shù)大于0 繼續(xù)向右移
// //
// int result = (value >> offset) & 1 ; // 取出最高位
// printf("%i",result);
// // 3.每次取出一位數(shù)就讓控制右移的變量-1
// offset --;
// if ((offset+1) % 4 == 0) {
// //打一個(gè)空格
// printf(" ");
// }
//
// }
// printf("\n");
#pragma mark for循環(huán)
for (int i = 31; i>=0; i--) {
int result = (value >> i) & 1 ; // 取出最高位
printf("%i",result);
if (i % 4 == 0) {
//打一個(gè)空格
printf(" ");
}
}
printf("\n");
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者