本文目录导读:

手动计算方法(除2取余法)
# 手动计算步骤
def decimal_to_binary_manual(n):
"""除2取余法"""
if n == 0:
return "0"
binary = ""
while n > 0:
remainder = n % 2 # 取余数
binary = str(remainder) + binary # 余数放在最前面
n = n // 2 # 整数除法
return binary
# 示例
print(decimal_to_binary_manual(10)) # 输出: 1010
print(decimal_to_binary_manual(25)) # 输出: 11001
Python内置函数
# 方法1: bin() 函数
decimal = 10
binary = bin(decimal) # 返回 '0b1010'
print(binary[2:]) # 去掉前缀 '0b',输出: 1010
# 方法2: format() 函数
binary = format(decimal, 'b') # 输出: 1010
# 方法3: f-string (Python 3.6+)
binary = f"{decimal:b}" # 输出: 1010
# 方法4: 指定位数(补零)
binary_8bit = f"{decimal:08b}" # 输出: 00001010
其他编程语言实现
JavaScript
// 内置方法
function decimalToBinary(num) {
return num.toString(2);
}
// 手动实现
function decimalToBinary(num) {
if (num === 0) return "0";
let binary = "";
while (num > 0) {
binary = (num % 2) + binary;
num = Math.floor(num / 2);
}
return binary;
}
console.log(decimalToBinary(10)); // "1010"
Java
public class DecimalToBinary {
// 内置方法
public static String toBinary(int num) {
return Integer.toBinaryString(num);
}
// 手动实现
public static String toBinaryManual(int num) {
if (num == 0) return "0";
StringBuilder binary = new StringBuilder();
while (num > 0) {
binary.insert(0, num % 2);
num /= 2;
}
return binary.toString();
}
public static void main(String[] args) {
System.out.println(toBinary(10)); // 1010
}
}
C/C++
#include <stdio.h>
#include <string.h>
void decimalToBinary(int n) {
if (n == 0) {
printf("0");
return;
}
int binary[32]; // 假设整数为32位
int i = 0;
while (n > 0) {
binary[i] = n % 2;
n = n / 2;
i++;
}
// 反向输出
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
}
int main() {
decimalToBinary(10); // 输出: 1010
return 0;
}
Shell脚本
#!/bin/bash
# 方法1: 使用bc命令
decimal=10
binary=$(echo "obase=2;$decimal" | bc)
echo $binary # 输出: 1010
# 方法2: 手动实现
decimal_to_binary() {
local n=$1
local binary=""
if [ $n -eq 0 ]; then
echo "0"
return
fi
while [ $n -gt 0 ]; do
binary=$(( n % 2 ))$binary
n=$(( n / 2 ))
done
echo $binary
}
decimal_to_binary 10 # 输出: 1010
处理负数和小数
# 处理负数(补码表示)
def negative_to_binary(n, bits=8):
"""将负数转换为指定字长的补码"""
if n >= 0:
return f"{n:0{bits}b}"
else:
# 计算补码:2^bits + n
return f"{(1 << bits) + n:0{bits}b}"
# 处理小数(乘2取整法)
def decimal_to_binary_fraction(num, precision=8):
"""将小数部分转换为二进制"""
if num >= 1 or num <= 0:
raise ValueError("请输入0到1之间的小数")
binary = ""
for _ in range(precision):
num *= 2
if num >= 1:
binary += "1"
num -= 1
else:
binary += "0"
if num == 0:
break
return binary if binary else "0"
# 完整转换(整数+小数)
def decimal_to_binary_full(num, int_bits=8, frac_bits=8):
"""将十进制数完整转换为二进制"""
# 处理符号
positive = num >= 0
num = abs(num)
# 分离整数和小数部分
int_part = int(num)
frac_part = num - int_part
# 转换整数部分
if int_part == 0:
int_binary = "0" * int_bits
else:
int_binary = format(int_part, f'0{int_bits}b')[-int_bits:]
# 转换小数部分
frac_binary = decimal_to_binary_fraction(frac_part, frac_bits)
# 组合结果
if positive:
return f"{int_binary}.{frac_binary}"
else:
# 负数:取反加一
# 这里简化处理,实际需要完整补码运算
return f"-{int_binary}.{frac_binary}"
# 测试
print(decimal_to_binary_full(10.25)) # 输出: 00001010.01000000
| 方法 | 适用场景 | 特点 |
|---|---|---|
| 除2取余 | 手动计算、学习原理 | 直观易理解 |
| 内置函数 | 编程快速实现 | 简单高效 |
| 位运算 | 性能要求高 | 底层操作 |
| 数学方法 | 任意进制转换 | 通用性强 |
选择哪种方法取决于你的具体需求:
- 学习原理:使用手动计算方法
- 日常编码:使用内置函数
- 特殊需求:如处理负数、小数、任意进制等,需要自定义实现
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播