首页 > 试题广场 >

二进制数

[编程题]二进制数
  • 热度指数:25127 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
大家都知道,数据在计算机里中存储是以二进制的形式存储的。 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。

输入描述:
多行,每一行表示要求的数字


输出描述:
输出共T行。每行输出求得的二进制串。
示例1

输入

23
535
2624
56275
989835

输出

10111
1000010111
101001000000
1101101111010011
11110001101010001011
#include<stdio.h>
#include<math.h>
int main(){
    unsigned int a;
    int i;
    int str[33];
    while(scanf("%d",&a)!=EOF){
        for(i=0;i<33;i++){
            str[i]=a%2;
            if(a>0){
            a=a/2;    
            }else{
                break;
            }
        }
        if(str[i]!=0){
            printf("%d",str[i]);
        }else{
            i--;
        }
        for(;i>=0;i--){
            printf("%d",str[i]);
        }
    }
        
    return 0;    
        
     

编辑于 2024-03-14 16:37:58 回复(0)
  • C语言常规解法
  • #include <stdio.h>
                      
    #define maxn 100  
                      
    int bin[maxn], num = 0;
                      
    void conv(int x, int *bin, int *num)
    {                 
       do             
       {              
            bin[(*num)++] = x % 2;                                                                                                                                
            x /= 2;   
       } while(x != 0); 
    }                 
                      
    int main()        
    {                 
        int n;        
        while(scanf("%d", &n) != EOF)
        {             
            conv(n, bin, &num);
            for (int i = num - 1; i >= 0; i--)
                printf("%d", bin[i]);
            puts(""); 
            num = 0;  
        }             
        return 0;        
    } 


发表于 2022-03-09 21:43:00 回复(0)

问题信息

难度:
2条回答 12564浏览

热门推荐

通过挑战的用户

查看代码