Java 源码解析:十进制转二进制

本文详细解析了Java中将整型数字转换成二进制字符串的方法。通过具体示例,深入介绍了实现这一转换的具体步骤及背后的原理,包括使用无符号右移操作符和位运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


static final char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };

public static String toBinaryString(int paramInt){
return toUnsignedString(paramInt, 1);
}
private static String toUnsignedString(int paramInt1, int paramInt2){
char[] arrayOfChar = new char[32];
int i = 32;
// 此处按二进制 1左移 1 位 为2
int j = 1 << paramInt2;
int k = j - 1;
do {
// paramInt1 & k k=1,偶数 & 1 = 0,奇数 & 1 = 1
arrayOfChar[(--i)] = digits[(paramInt1 & k)];
// >>>无符号右移操作符 无符号为正还是为负 都在高位插入0
paramInt1 >>>= paramInt2;
}while (paramInt1 != 0);
// public String(byte[] bytes,int offset, int length)
// bytes - 要解码为字符的 byte
// offset - 要解码的第一个 byte 的索引
// length - 要解码的 byte 数
// 从第offset的索引开始 解码长度为length
return new String(arrayOfChar, i, 32 - i);
}




toBinaryString(2);//调用下分析


2的二进制为0000 0000 0000 0000 0000 0000 0000 0010

arrayOfChar[31] = digits[2&1] = '0'

2 >>> 1 为 0000 0000 0000 0000 0000 0000 0000 0001
paramInt1 = 1
arrayOfChar[30] = digits[1&1] = '1'
1 >>> 1 为 0
循环终止

new String(arrayOfChar,30,2) 其实就是new String(new char[2])
char[0] = arrayOfChar[30]
char[1] = arrayOfChar[31]

返回String 10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值