- /*
- 编写一个函数输出整数的二进制形式?
- */
- #include <stdio.h>
- void erzhuan(int n ); //整数转二进制函数转换函数申明
- int main()
- { int a;
- printf("请输入一个整数:\n");
- scanf("%d",&a);
- erzhuan(a);
- return 0;
-
- }
- void erzhuan(int n )
- {
- int number = (sizeof (int) << 3) - 1 ; //调用sizeof函数算字节数
- int a = number; // 加个变量,初始化等于number
- for( int h;number >=0; number--)
- {
- h=n>>number&1; // 在没有判断之前先计算输出
- printf("%d",h);
-
- if(number% 4 == 0 )//这里的number从31开始,第一次就不会有空格了
- { //每4个就空格一次
- printf(" ");
- }
-
-
- }
- printf("\n");
- }
复制代码
下面是我之前写的,用while看着更舒服
- void printBinary(int number)
- {
- //记录现在挪到第几位,默认31
- //右移
- //减号的优先级大于左移
- int temp =(sizeof(number)<<3)-1;
- while (temp>=0)
- { int value = number>>temp & 1;
-
-
-
- printf("%d",value);
-
-
- if(temp%4 ==0)
- {
- printf(" ");
- }
-
- temp--;
- }
- printf("\n");
- }
复制代码 |