一、在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!