当前位置: 代码迷 >> 综合 >> 2021-05-20 C语言int打印出二进制数代码
  详细解决方案

2021-05-20 C语言int打印出二进制数代码

热度:43   发布时间:2023-11-27 12:29:51.0

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

 

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

二、测试代码。

#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;//值为31while (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");}#endifint main()
{   printf("printbinry:\r\n");printbinry(-1);printbinry(1);printbinry(2);printbinry(-0x32721234);printbinry(0x32721234);  printf("print_bin:\r\n");print_bin(-1);print_bin(1);print_bin(2);print_bin(-0x32721234);print_bin(0x32721234); printf("test completely! \r\n");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!