Problem O(十进制转换二进制)

Problem Description

Give you a number on base ten,you should output it on base two.(0 < n < 1000)

Input

For each case there is a postive number n on base ten, end of file.

Output

For each case output a number on base two.

Sample Input

1

2

3

Sample Output

1

10

11

思路:十进制转换为二进制,只要n/2不为零,就一直进行除二操作,然后倒着输出每一步的余数。

代码:

#include <iostream>
#include<string.h>
using namespace std;
int bn[16];
int main()
{
  int n = 0;

  while(cin >> n){
    memset(bn,0,sizeof(bn));
    int i = 0;
    bn[i] = n % 2;
    n = n/2;
    while(n){
      i++;
      bn[i] = n%2;
      n = n/2;
    }
    for(int j = i;j >= 0;j --){
      cout << bn[j];
    }
    cout << endl;
  }
  return 0;
}

时间: 2024-10-20 02:09:20

Problem O(十进制转换二进制)的相关文章

Formiko总结整数十进制转换二进制原理

引子: 为什么十进制转二进制的“辗转相除记录余数倒序输出”的算法是正确的?这个问题陪伴了Formiko半年. 实践: 实践一:把十进制数100转换成二进制数的图   上图和和下图唯一的区别在最后一位上,只是除到0和除到1的区别,但在算法本身的理解上应该不会有本质的区别. 实践二: 十进制数100或许太大,不便于一目了然的验证.试一试十进制数1,2,3. 思考: 以上算法的思路是“对原数反复进行除法得到余数,最后将余数倒序输出”.但是看到如图对十进制数100,1,2,3的操作,都看不出原思路的由来

C语言 十进制转换二进制

十进制转换二进制主要采用的是连除倒取余的方法  代码如下 int num = 8; int tempArr[32]={0}; int i = 0; while (num / 2 != 1 ) { tempArr[i] = num % 2; num /=2; i++; } tempArr[i+1] = 1; for (int j = sizeof(tempArr)/sizeof(int)-1; j>=0; j--) { printf("%d", tempArr[j]); }

十进制转换二进制

// 十进制转换二进制 private static String convertBinary(int sum) { StringBuffer binary = new StringBuffer(); while (sum != 0 && sum != 1) { binary.insert(0, sum % 2); sum = sum / 2; if (sum == 0 || sum == 1) { binary.insert(0, sum % 2); } } return binary.

6-4 十进制转换二进制 (15 分)

本题要求实现一个函数,将正整数n转换为二进制后输出. 函数接口定义: void dectobin( int n ); 函数dectobin应在一行中打印出二进制的n.建议用递归实现. 裁判测试程序样例: #include <stdio.h> void dectobin( int n ); int main() { int n; scanf("%d", &n); dectobin(n); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 10 输出

顺序栈-使用顺序栈实现十进制转换二进制

1 #include"stdio.h" 2 #define MaxSize 50 3 typedef int DataType; 4 typedef struct{ 5 DataType elem[MaxSize]; 6 int top; 7 }SeqStack; 8 void initStack(SeqStack &s) 9 { 10 s.top = -1; 11 } 12 int push(SeqStack &s , DataType x) 13 { 14 if(s

进制转换之二进制与十进制转换

一.正整数的十进制转换二进制: 要点:除二取余,倒序排列 解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等 于一或零时为止,倒取将除得的余数,即换算为二进制数的结果 例如把52换算成二进制数,计算结果如图: 52除以2得到的余数依次为:0.0.1.0.1.1,倒序排列,所以52对应的二进制数就是110100. 由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位..... 于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个

Java 控制台做个十进制和二进制互相转换

计算机使用的是二进制,计算机只认识0和1 我们日常使用的是十进制,满十进一 既然计算机只认识0和1,那么我们日常使用的计算机时如何操作呢 这就需要一套二进制和十进制互相转换的公式了 首先说十进制转换二进制,就是不断的用十进制的数字除以2,直到十进制的数字最后为0时,将余数倒序排列就是十进制的二进制表示了 如下,十进制数字12转换为二进制 12 / 2 = 6 余数为 0 6 / 2 = 3   余数为 0 3 / 2 = 1   余数为 1 1 / 2 = 0   余数为 1 然后将余数倒序连起

python基本数据类型(字节字符十进制十六进制二进制转换)

#公共功能 # 索引:只能取一个元素 # 切片:取多个元素 #len:计算长度 #for name='李露' #utf-8 一个汉字三个字节 for i in name: print(i) bytes_list=bytes(i,encoding='utf-8') #默认输出十六进制 for b in bytes_list: print(b) #循环的时候默认输出十进制 #3.5 for循环的时候,循环的每个元素时字符 #字符->字节 #bytes() #utf-8->3字节 #gbk->

二进制与十进制转换问题

进制转换问题实为最基础也实用的一种基本技能.首先得说,进制转换很简单,但就是时间长不用依赖计算器就容易忘,毕竟这不像其他的能在日常生活就经常用的的数学. 那么就聊聊十进制与二进制的转化,十进制转化为二进制,两种方法:短除法,数轴法.先说短除法,用10进制数除以2,得到的余数按倒叙排列,把52化成2进制就像这样,得到的结果为110100 再说数轴法,所谓的数轴法就是在数轴上从右到左分别标记2^0到2^n比如2^0等于1,2^1等于2,2^2等于4,一直下去,然后观察10进制数由几个这样的数组成,拿