十进制转化为二进制的几种方法

本文详细介绍了三种将十进制数转换为二进制数的方法,包括使用位运算、字符串拼接和余数累加的方式,适合初学者理解和实践。

/十进制转二进制的三种方法/
package 数据结构;
import java.util.Scanner;;
public class 十转二进制 {

public static void main(String[] args) {

/*方法一:设置一个记位数的变量k;

	int k=1;			//控制位数
	int remember;	//存放余数
	int sum=0;		//用来将余数相加
	Scanner a = new Scanner(System.in);
	int b=a.nextInt();
	while(b!=0)
	{
		remember = b%2;
		b/=2;
		sum=sum+remember*k;
		k=k*10;	
	}
	System.out.println();
	System.out.println("转换成二进制是:"+sum);

*/

方法二(将每一个余数用字符的形式输出)

{
	int n=123;
	 String str = "";
	 while(n!=0){
	      str = n%2+str;
	      n = n/2;
	     }
	 System.out.println(str);
}

方法三:“移位操作”
>>>逻辑运算符,向右移n位,高位补零
>>算数运算符,向右移n位,正数高位补0,负数高位补1
<<移位符,向左移n位

{
	int n=123;
	for(int i = 31;i >= 0; i--)
	System.out.print(n >>> i & 1);
}

}

当处理超大十进制数转换为二进制数时,由于普通的数据类型可能无法存储这么大的数,以下是几种可行的方法: ### 除 2 取余法 这是最基本的十进制二进制方法,对于超大数可以使用字符串来处理。其核心思想是不断地将十进制数除以 2,记录余数,直到商为 0,然后将余数倒序排列就是二进制结果。 ```python def decimal_to_binary(decimal_str): binary = "" decimal = int(decimal_str) while decimal > 0: remainder = decimal % 2 binary = str(remainder) + binary decimal = decimal // 2 return binary # 示例 decimal_num = "12345678901234567890" binary_num = decimal_to_binary(decimal_num) print(binary_num) ``` ### 内置函数法 在 Python 中,可以直接使用内置的 `bin()` 函数,它可以处理大整数。该函数接收一个整数作为参数,返回一个以 `0b` 开头的二进制字符串。 ```python decimal_num = "12345678901234567890" decimal_int = int(decimal_num) binary_num = bin(decimal_int)[2:] print(binary_num) ``` ### 分治法 对于特别大的数,可以将其拆分成较小的部分分别处理,最后合并结果。 ```python def split_and_convert(decimal_str, chunk_size=10): binary_parts = [] for i in range(0, len(decimal_str), chunk_size): chunk = decimal_str[i:i + chunk_size] binary_part = bin(int(chunk))[2:] binary_parts.append(binary_part) combined_binary = "" carry = 0 for i in range(len(binary_parts) - 1, -1, -1): num = int(binary_parts[i], 2) + carry binary_part = bin(num)[2:] combined_binary = binary_part + combined_binary carry = num // (2 ** len(binary_part)) return combined_binary # 示例 decimal_num = "12345678901234567890" binary_num = split_and_convert(decimal_num) print(binary_num) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值