转换为二进制
给出一个非负整数 n。
把 n 转换成二进制输出,不带多余的前导 0。
若 n 为 0,则输出 0。
- 输入
- 0 ≤ n ≤ 10^9
- 输出
- 一行,n 的二进制表示
13
1101
0
0
给出一个非负整数 n。
把 n 转换成二进制输出,不带多余的前导 0。
若 n 为 0,则输出 0。
13
1101
0
0
运行时这些行会依次作为 input()/标准输入传入(运行中不会等待输入)。
$ 就绪
请在电脑上打开以编写和运行代码。在手机上可以查看题目和题解。
收集除以 2 的余数时是从低位开始得到的,所以要加在前面,或收集完再反转。
常见陷阱是只写 while (n > 0) —— n = 0 时一次也不循环,输出空行。
先执行一次循环体的 do … while(Java、C#、C、C++、JavaScript、TypeScript)正合适;没有 do 的 Python 和 Craykon 要单独处理 0。
现成工具:Python bin(n)[2:],JavaScript n.toString(2),Java Integer.toBinaryString(n),C# Convert.ToString(n, 2),都会把 0 输出为 "0"。
Craykon 写作 当 (n > 0) { … n = 数学.商(n, 2); };/ 会除出小数,所以用商。
n = int(input())if n == 0: print(0)else: digits = "" while n > 0: digits = str(n % 2) + digits n //= 2 print(digits)let n = Number(require("fs").readFileSync(0, "utf8").trim());let digits = "";do { digits = (n % 2) + digits; n = Math.floor(n / 2);} while (n > 0);console.log(digits);import { readFileSync } from "node:fs";let n: number = Number(readFileSync(0, "utf8").trim());let digits = "";do { digits = (n % 2) + digits; n = Math.floor(n / 2);} while (n > 0);console.log(digits);import java.util.Scanner; public class Main { public static void main(String[] args) { int n = new Scanner(System.in).nextInt(); StringBuilder digits = new StringBuilder(); do { digits.append(n % 2); n /= 2; } while (n > 0); System.out.println(digits.reverse()); }}using System;using System.Text; class Program{ static void Main() { int n = int.Parse(Console.ReadLine().Trim()); var digits = new StringBuilder(); do { digits.Insert(0, n % 2); n /= 2; } while (n > 0); Console.WriteLine(digits); }}#include <algorithm>#include <iostream>#include <string> int main() { int n; std::cin >> n; std::string digits; do { digits += char('0' + n % 2); n /= 2; } while (n > 0); std::reverse(digits.begin(), digits.end()); std::cout << digits << '\n';}#include <stdio.h> int main(void) { int n; scanf("%d", &n); char digits[32]; int len = 0; do { digits[len++] = '0' + n % 2; n /= 2; } while (n > 0); for (int i = len - 1; i >= 0; i--) putchar(digits[i]); putchar('\n'); return 0;}n = 控制台.读行().转数字();如果 (n == 0){ 控制台.输出("0");}否则{ digits = ""; 当 (n > 0) { digits = n % 2 + digits; n = 数学.商(n, 2); } 控制台.输出(digits);}