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!