前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言int打印出二进制数代码

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

原创
作者头像
IT工作者
发布2022-06-30 11:09:48
1.2K0
发布2022-06-30 11:09:48
举报
文章被收录于专栏:程序技术知识程序技术知识

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、在C语言中,打印16进制可以使用printf的%x格式。打印二进制数并没有现成的格式数值,只能自行编写函数打印。
  • 二、测试代码。
  • 三、测试结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档