脚本如何十进制转二进制

wen 实用脚本 27

本文目录导读:

脚本如何十进制转二进制

  1. 手动计算方法(除2取余法)
  2. Python内置函数
  3. 其他编程语言实现
  4. 处理负数和小数

手动计算方法(除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取余 手动计算、学习原理 直观易理解
内置函数 编程快速实现 简单高效
位运算 性能要求高 底层操作
数学方法 任意进制转换 通用性强

选择哪种方法取决于你的具体需求:

  • 学习原理:使用手动计算方法
  • 日常编码:使用内置函数
  • 特殊需求:如处理负数、小数、任意进制等,需要自定义实现

抱歉,评论功能暂时关闭!