首页 > 试题广场 >

二进制数

[编程题]二进制数
  • 热度指数:25115 时间限制: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
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) {
        Scanner in=new Scanner(System.in); int n=0; while (in.hasNext())
        {
            n=in.nextInt(); for(int i=0;i<n;i++)
            { int m=in.nextInt();
                System.out.println(Integer.toBinaryString(m));
            }

        }
    }
}

发表于 2016-11-05 20:22:06 回复(0)

jdk的源码就是这么写的

package com.speical.first;

import java.util.Scanner;

/** 
*
* @author special
* @date 2018年2月4日 上午10:38:54
*/
public class Pro184 {
    public static String toBinary(int num){
        char[] digits = new char[32];
        int index = 32;
        while(num != 0){
            digits[--index] = (char) ('0' + (num & 1));
            num >>>= 1;
        }
        return new String(digits, index, 32 - index);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        while(input.hasNext()){
            int n = input.nextInt();
            System.out.println(toBinary(n));
        }
    }

}
发表于 2018-02-04 10:47:51 回复(0)
贴个垃圾题解
using namespace std;
#include <cstdio>
#include <string>
#include <algorithm>
int main(){
    unsigned int n;
    while(scanf("%u", &n) != EOF){
        string ans = "";
        while(n > 0){
            ans += char((n & 0x00000001) + '0');
            n = n >> 1;
        }
        reverse(ans.begin(), ans.end());
        printf("%s\n", ans.c_str());
    }
    return 0;
}


发表于 2021-06-22 10:49:31 回复(0)
Java 解法,题目其实没有输入n,表述有误
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) System.out.println(Integer.toBinaryString(scanner.nextInt()));
    }
}


发表于 2020-03-18 09:54:19 回复(0)
import java.util.Arrays;
import java.util.Scanner;

public class Main{
	
	public static void main(String[] args)  {
		Scanner scanner = new Scanner(System.in);
		while(scanner.hasNext()) {
			int n = scanner.nextInt();
			System.out.println(Integer.toBinaryString(n));
		}
	}
}

发表于 2020-03-09 13:01:10 回复(0)
#include<stdio.h>
int main (){//the shorter,the better.
    int n,t,bin[28],i;
    for(;~scanf("%d",&n)&&n;)
       for (;n>0&&~scanf("%d",&t);n--){
            for(i=0;t>0&&~(bin[i++]=t&1);t>>=1);
            for (--i;i>=0;i==0?printf("%d\n",bin[i]):printf("%d",bin[i]),i--);
       }
}

发表于 2018-01-13 11:17:33 回复(1)

import java.util.Scanner;
import java.util.Stack;
public class Main{
public static void main(String[] s){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int t=sc.nextInt();
int[] num=new int[t];
//读取数据
for(int i=0;i<t;i++){
num[i]=Integer.parseInt(sc.next());

     }
      //开始处理
      for(int i=0;i<t;i++){
          System.out.println(test(num[i]));
      }

  }

}
public static String test(int a){
//用了一个栈
Stack<Integer> stack=new Stack<Integer>();
while(a>0){
stack.push(a%2);
a/=2;
}
String str="";
while(!stack.isEmpty()){
str+=stack.pop();
}
return str;
}
}

发表于 2017-04-25 15:07:37 回复(0)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "math.h"

int main(void)
{
	int n;
	while(scanf("%d",&n) != EOF)
	{
		int input[1001];
		int output[1001];
		int i = 0;int j = 0;
		int m=0;
	
		for(i=0;i<n;i++)
		{
			scanf("%d",&input[i]);
		}
		for(i=0;i<n;i++)
		{
			while(input[i] != 0)
			{
				output[m++] = input[i]%2;
				input[i]/=2;
			}
			for(j=m-1;j>=0;j--)
			{
				printf("%d",output[j]);
			}
			m=0;
			printf("\n");
		}
		
	}
}

发表于 2016-12-02 08:31:52 回复(0)
#include<iostream>
using namespace std;

void binary(unsigned int n);
int main(){
   int num;
   unsigned int n;
   cin >> num;
   for (int i = 0; i < num; i++){
       cin >> n;
       binary(n);
   }
   return 0;
}

void binary(unsigned int n){
    int a;  //yushu
    string str;
    if (n == 0){
        cout << "0" << endl;
        return;
    }
    
    while(n != 1){
        a = n % 2;
    	n = n/2;
    	if(a == 1){
        	str = str + '1';
    	}
    	else{
        	str = str + '0';
    	} 
    }
    str = str + '1';
    int len = str.length();
    for (int i = len-1;i >= 0; i--){
        cout << str[i];
    }
    cout << endl;
    
}

发表于 2016-08-23 16:22:11 回复(0)
#include<iostream>
using namespace std;
void code(unsigned n){
    unsigned int r=n&1;
    if(n==0) return;
    code(n>>1);
    cout<<r;
}
int main(){
    //采用位运算和右移运算逐个获得二进制,递归倒序输出
    unsigned int n;
    while(cin>>n){
        code(n);        
    }
    return 0;
}

位运算递归版 思路简单

编辑于 2019-02-21 19:52:14 回复(5)
输入样例错误,第一行“5”是多余的呀..

发表于 2020-03-08 11:03:28 回复(5)

while True:
    try:
        a=int(input())
        for i in range(a):
            print(bin(int(input())).replace("0b",""))

    except:
        break

python solution, easy enough.

发表于 2017-10-01 14:53:33 回复(1)
#include<bits/stdc++.h>
int main(){
    unsigned int n,a[33]={0};
    while(scanf("%u",&n)!=EOF){
       int i;
        for(i=0;n!=0;i++){
            unsigned int s=n&1;
            a[i]=s;
            n=n>>1;
        }
        for(;i>0;i--)
            printf("%u",a[i-1]);
        printf("\n");
    }
}
编辑于 2019-03-04 15:05:30 回复(0)
C语言基础版,由于C++编译器无法支持itoa函数,故无法通过测试,请自行测试C编译
#include <stdio.h>
(737)#include <stdlib.h>


//将十进制数字输出为二进制
//利用itoa函数将整型int转换为二进制表示的字符型


int main()
{
    int a = 0;
    char ch[100];


    while(scanf("%d", &a))
    {

        itoa(a, ch, 2);


        puts(ch);


    }
}

发表于 2020-03-08 14:42:44 回复(1)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n;
        while(scanner.hasNext()){
            n=scanner.nextInt();
            StringBuilder str=new StringBuilder();
            while(n/2!=0 || n==1){
                str.append(n%2);
                n=n/2;
            }
            System.out.println(str.reverse().toString());
        }
    }
}

发表于 2018-09-13 23:41:49 回复(0)
#include <iostream>
#include <cstdio>
#include <string>
#include <stack>

using namespace std;

stack<int> num;


int main() {
	int x;
	while (scanf("%d",&x)!=EOF)
	{
		while (x!=0)
		{
			num.push(x % 2);
			x /= 2;

		}
		while (!num.empty())
		{
			cout << num.top();
			num.pop();
		}
		cout << endl;
	}

}

发表于 2022-02-16 12:34:13 回复(0)
#include<stdio.h>
int main()
{
    int n,a[1000],num,i;
    while(scanf("%d",&n)!=EOF)
    {
        num=0;
        while(n)
        {
            a[num]=n%2;
            n/=2;
            num++;
        }
        //倒序输出
        for(i=num-1;i>=0;i--)
            printf("%d",a[i]);
        printf("\n");
    }
}

发表于 2020-05-06 13:37:51 回复(0)
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main(){
    int num = 0, res = 0, remain = 0;
    vector<int> binary;
    while(cin >> num){
        while(num > 0){
            remain = num % 2;
            binary.push_back(remain);
            num = num/2;
        }
        for(int i = binary.size()-1; i >= 0; --i){
            cout << binary[i];
        }
        cout << endl;
        binary.clear(); //清空数组
    }
    return 0;
}

编辑于 2024-03-07 10:55:32 回复(0)
#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;
    while(cin>>n) {
        stack<int> Stack;
        while(n!=0) {
            Stack.push(n%2);
            n/=2;
        }
        while(!Stack.empty()) {
            cout<<Stack.top();
            Stack.pop();
        }
        cout<<endl;
    }
    return 0;
}
发表于 2022-10-06 16:06:55 回复(0)
#include<stdio.h>
int main(){
 int n;
 while(~scanf("%d",&n)){
  int ans[1000],size=0;
  do{
   ans[size++]=n%2;
   n/=2;
  }while(n);
  for(int i=size-1;i>=0;i--)
   printf("%d",ans[i]);
  printf("\n");
 }
 return 0;
}
发表于 2019-01-28 11:44:52 回复(0)

问题信息

难度:
147条回答 12547浏览

热门推荐

通过挑战的用户

查看代码