C语言int打印出二进制数代码

2022-06-30 11:09:48 浏览数 (1)

一、在C语言中,打印16进制可以使用printf的%x格式。打印二进制数并没有现成的格式数值,只能自行编写函数打印。

二、测试代码。

代码语言:javascript复制
#include "stdio.h"
#include "stdlib.h"
/*
 * 二进制数格式输出,输出所有位
 * 6bit
 * 011010
 * 100000 1<<5
 * &
 * */
void print_bin(int number){
    int bit = sizeof(int)*8;
    int i;
    for(i = bit - 1;i >= 0;i--){
        int bin = (number & (1 << i)) >> i;
        printf("%d", bin);
        if (i%8==0) {
            printf(" ");
        }
    }
    printf("n");
}
#if 0
//右移31位,从最高为开始和1做&运算,得到每一位的二进制数值
void printbinry(int num)
{
    int count = (sizeof(num)<<3)-1;//值为31
    while (count>=0) {
        int bitnum = num>>count; //除去符号位,从最高位开始得到每一位
        int byte = bitnum & 1; //和1进行与运算得到每一位的二进制数
        printf("%d",byte);
 
       //if (count%4==0) {//每隔四位打印空格
        if (count%8==0) {//每隔四位打印空格
            printf(" ");
        }
 
        count--;
    }
    printf("n");
 
}
#endif
#if 1
void printbinry(int data)
{
    int count = sizeof(int)*8;
    while (count--) {
        int byte = (data >> count) & 1; 
        printf("%d",byte);
        if (count%8==0) {
            printf(" ");
        }
    }
    printf("n");
 
}
 
#endif
 
int main()
{   
    printf("printbinry:rn");
    printbinry(-1);
    printbinry(1);
    printbinry(2);
    printbinry(-0x32721234);
    printbinry(0x32721234);  
      
    printf("print_bin:rn");
    print_bin(-1);
    print_bin(1);
    print_bin(2);
    print_bin(-0x32721234);
    print_bin(0x32721234); 
 
 
    printf("test completely! rn");
    return 0;
}

三、测试结果

xxx$ ./test

printbinry:

11111111 11111111 11111111 11111111

00000000 00000000 00000000 00000001

00000000 00000000 00000000 00000010

11001101 10001101 11101101 11001100

00110010 01110010 00010010 00110100

print_bin:

-11111111 11111111 11111111 11111111

00000000 00000000 00000000 00000001

00000000 00000000 00000000 00000010

-11001101 10001101 11101101 11001100

00110010 01110010 00010010 00110100

test completely!

0 人点赞