题目1473:二进制数
- 题目描述:
-
大家都知道,数据在计算机里中存储是以二进制的形式存储的。
有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。
你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。
- 输入:
-
第一行,一个数字T(T<=1000),表示下面要求的数字的个数。
接下来有T行,每行有一个数字n(0<=n<=10^8),表示要求的二进制串。
- 输出:
-
输出共T行。每行输出求得的二进制串。
- 样例输入:
-
5 23 535 2624 56275 989835
- 样例输出:
-
10111 1000010111 101001000000 1101101111010011 11110001101010001011
#include<iostream> using namespace std; void printbinary( int val) { int arry[1024]; int k=0; if(val==0) { cout<<0; } else { while(val) { arry[k++]=val%2; val=val/2; } for(int i=k-1;i>=0;i--) { cout<<arry[i]; } } cout<<endl; } int main() { int count; cin>>count; for(int i=0;i<count;i++) { int num; cin>>num; printbinary(num); } return 0; }
或者
#include <stdio.h> #include <stdlib.h> int array[10001]; int main () { int N,i,k; unsigned int n; while(scanf("%d",&N) != EOF) { while(N--) { k = 0; scanf("%u",&n); if(n == 0) { printf("0\n"); } else { while(n) { array[k++] = n % 2; n = n / 2; } for(i = k-1;i >= 0;i--) { printf("%u",array[i]); } printf("\n"); } } } return 0; }