#pragma mark 位运算符练习1 ###pragma mark 概念
###pragma mark 代码
#include
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");
}