`

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

阅读更多
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
0
0
分享到:
评论

相关推荐

    java 任意进制转换(源码)

    Java中的`Integer.toBinaryString(int)`方法可以将一个十进制整数转换成其二进制字符串表示。 3. **八进制和十六进制转换**: - 八进制用前缀`0`表示,十六进制用前缀`0x`或`0X`表示。Java提供了`Integer....

    IEEE754浮点数与十进制数互相转换原理分析

    1. **解析二进制**:读取浮点数的符号位、指数和尾数。 2. **处理特殊值**:检查指数是否全0或全1,这可能表示零、无穷大或NaN(非数字)。 3. **处理指数**:对指数进行解偏移操作,得到实际指数值。 4. **恢复尾数...

    16进制单精度(32位)浮点型转换器源码

    本主题聚焦于一个特定的工具或源码,即“16进制单精度(32位)浮点型转换器”,它能够将32位的浮点数在16进制表示与十进制表示之间进行转换,并考虑到了不同的字节序——大端和小端。 首先,我们要理解16进制和...

    进制转换器源码

    例如,十进制的123转为二进制: ``` 123 = 1 * 2^5 + 2 * 2^2 + 3 * 2^0 = 1 * 32 + 2 * 4 + 3 * 1 = 64 + 8 + 3 = 75 (二进制) ``` - **从低进制到高进制**:不断除以目标进制的基数并记录余数,直到商为0。...

    Java中的进制与移位运算符

    在Java中,前缀`0b`或`0B`用来标识一个二进制数,例如`0b1011`表示十进制中的11。 2. **八进制**:使用0到7这八个数字,基数为8。在Java中,前缀`0`用来标识一个八进制数,如`013`表示十进制中的11。 3. **十进制**...

    任意大16进制转10进制

    源码实现十六进制转十进制的例子,这里以Python为例: ```python def hex_to_dec(hex_str): return int(hex_str, 16) hex_number = "1ABC" print(hex_to_dec(hex_number)) # 输出:4372 ``` 在这个例子中,`int...

    java 源码 (数字转换2)

    例如,将十进制转换为二进制: ```java int decimalNum = 10; String binaryStr = Integer.toBinaryString(decimalNum); ``` 而将二进制字符串转换为十进制: ```java String binaryStr = "1010"; int ...

    ICE104规约Java解析源码

    Java代码会通过读取网络或文件中的二进制数据,然后按照规约格式逐一解析每个域。例如,可能需要定义一个`Ice104Frame`类来存储整个帧的信息,并且有对应的子类如`Ice104TelemetryFrame`和`Ice104StatusFrame`来处理...

    java中BCD编码

    在Java编程语言中,BCD(Binary Coded Decimal,二进制编码的十进制)是一种特殊的数据编码方式,主要用于处理十进制数值。BCD编码将每个十进制数字映射为4位二进制表示,使得在计算机内部处理时能够更高效地进行十...

    java代码-八进十进制

    在实际编程中,理解并能够操作不同进制之间的转换对于解决许多问题至关重要,特别是在处理二进制、八进制、十进制和十六进制数据时。例如,在处理位运算、文件权限或内存地址时,理解这些转换可以帮助我们更好地理解...

    进制转换工具类

    在计算机科学中,进制转换是非常基础且重要的概念,常见的进制有二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制(Hexadecimal)。这个工具类可能包含了将数字从一种进制转换到另一种进制的方法。 ...

    Java源码解析Integer方法解读

    `shift`决定了我们将使用哪种基数(base)进行转换,例如,当`shift`为2时,基数为4(因为2的2次方是4),表示二进制;当`shift`为3时,基数为8,表示八进制。`mask`则是根据`shift`计算出的用于与操作的值,以获取...

    NumConvert.rar

    1. 二进制:由0和1两个数字组成,是计算机内部运算的基础,所有计算机指令和数据都是以二进制形式存储的。 2. 八进制:由0到7八个数字组成,是早期计算机系统中用于简化二进制表示的一种方式,每三位二进制可以对应...

    JAVA上百实例源码以及开源项目源代码

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    java 计算器源码

    4. **进制转换**:Java支持二进制、八进制、十进制和十六进制之间的转换。可以使用`Integer.parseInt()`或`Integer.toString()`方法,通过指定基数(base)来完成转换。例如,`Integer.parseInt("1010", 2)`将二进制...

    java科学型计算器源码

    例如,从二进制、八进制、十进制到十六进制的转换,以及在这些进制下进行数学运算。这需要理解各种进制表示法,并使用Java的`Integer.parseInt()`和`Integer.toString()`等方法进行转换。 除了上述技术,这个项目还...

    BaseConverter:因为我厌倦了做类似的Java任务

    例如,将二进制转换为十进制,可以使用"Integer.parseInt()"函数,该函数接受一个表示二进制的字符串,并将其解析为十进制整数。相反,将十进制转换为二进制,可以使用"Integer.toBinaryString()"方法,它会返回一个...

    java网络包全解析

    IPv4地址采用32位二进制数表示,通常写作四组十进制数的形式,每组之间用点分隔开。例如: 192.168.1.1。 ##### IpV6地址 IPv6地址使用128位二进制数表示,通常写作八组四位十六进制数的形式,每组之间用冒号分隔开...

    Java计算校验和源码

    ### Java计算校验和源码知识点解析 #### 一、概述 本文将深入解析一个用于计算十六进制数据校验和的Java方法:`makeChecksum`。该方法主要用于确保数据在传输过程中的完整性和一致性,避免因网络传输等问题导致的...

    Java核心技术II(第8版)

    1.3 读入和写出二进制数据 1.3.1 随机访问文件 1.4 ZIP文档 1.5 对象流与序列化 1.5.1 理解对象序列化的文件格式 1.5.2 修改缺省的序列化机制 1.5.3 序列化单例和类型安全的枚举 1.5.4 版本管理 1.5.5 为克隆使用...

Global site tag (gtag.js) - Google Analytics