`
arcticfox9902
  • 浏览: 108552 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

Java里的二进制转换

 
阅读更多

      数字在计算机中是以补码形式保存的,正数的原码、反码、补码都是一样的,而负数的补码是其反码加1。因此,正整数的二进制转换比较容易,负整数就略微复杂一点了。

      负整数由十进制转换为二进制的步骤为:取反,加1。例如:将-5转换为二进制的步骤如下:

      首先,5的二进制为101,扩展到32位为00000000 00000000 00000000 00000101,取反之后为11111111 11111111 11111111 11111010,加1之后就是11111111 11111111 11111111 11111011,这就是-5的二进制表示。

      负整数由二进制转换成十进制也是一样的步骤:取反,加1。继续用上面的例子,-5的二进制11111111 11111111 11111111 11111011取反之后为00000000 00000000 00000000 00000100,加1为00000000 00000000 00000000 00000101,这个二进制的值是5,而最初的二进制数的第一位是1,表示负数,因此转换之后是-5。

 

      Java源码里提供了一些函数来进行这样的进制转换,例如:Integer.toBinaryString(int i)返回i的二进制字符串表示,Integer.toHexString(int i)返回i的十六进制字符串表示,Integer.toOctalString(int i)返回i的八进制字符串表示,另外,Integer.toString(int i, int radix)返回i的radix进制表示,但和之前的方法有所不同,我们来看看下面的例子:

System.out.println(Integer.toString(-5, 2));
System.out.println(Integer.toBinaryString(-5));

System.out.println(Integer.toString(5, 2));
System.out.println(Integer.toBinaryString(5));

 输出结果为:

-101
11111111111111111111111111111011
101
101 

 当需要转换的数字为正数,则上面的两个函数返回结果是一样的,当需要转换的数字为负数时,结果就大不同了,toString(i, radix)函数返回的是-101,而toBinaryString(i)返回的才是与-5对应的真正的二进制字符串。八进制、十六进制也是一样的。

      相应的,Java源码里也提供了二进制转换为十进制的函数,例如:Integer.parseInt(String s, int radix)、Integer.valueOf(String s, int radix),这两个函数返回结果完全一样,事实上valueOf(s, radix)内部直接调用了parseInt(s, radix)函数,但是需要注意,这两个函数与上面的Integer.toString(int i, int radix)的操作是相反的,参数s是“-101”这种形式的,不是真正的二进制(或八进制、十六进制)表示。

 

ps:真正的二进制字符串转换为十进制的函数不知道Java源码里有没有,如果有以后再补上。

 

 

 

 

 

 

分享到:
评论

相关推荐

    Java实现的进制转换工具类完整示例

    Java实现的进制转换工具类是Java语言中的一种常用工具类,用于实现各种进制之间的转换操作,如二进制、十六进制、字符串、数组等。该工具类主要提供了将字节数组转换为十六进制字符数组或字符串的方法,以及将字符串...

    java基础,进制转换.pdf

    - 二进制转换:通过计算机内的算法,可以将一个数值在不同进制间进行转换,例如将十进制转换为二进制,或者相反。 - 数据类型范围:每种数据类型有其对应的取值范围。 - 转码:涉及到字符编码的转换,如UTF-8编码...

    Java编写的进制转换程序

    在编程领域,进制转换是一项基础且重要的技能,尤其是在处理二进制、八进制、十进制和十六进制等不同数值系统时。Java语言提供了丰富的API来支持这些转换,使得开发者能够轻松地在各种进制间进行切换。本项目就是一...

    java 将文件中二进制文件转换成文本文本文件并输出

    在Java编程语言中,将二进制文件转换为文本文档通常涉及到字符编码的理解和处理。二进制文件可以包含任何类型的数据,如图像、音频、视频或纯文本,但以非可读格式存储。而文本文档通常使用特定的字符编码(如ASCII...

    java中进制转换(二进制,十进制,十六进制)及字节数组与十六进制的转换

    6. **二进制转十六进制**:先将二进制转换为十进制,再转为十六进制。例如: ```java String binary = "101010"; int decimal = Integer.parseInt(binary, 2); String hex = Integer.toHexString(decimal); ``` 二...

    java进制转换工具类

    二进制数组转换为二进制字符串 将二进制数组转换为十六进制字符串 将十六进制转换为二进制字节数组 将十六进制转换为二进制字符串

    java十进制转换二进制

    通过分析代码逻辑、算法原理以及实现细节,帮助读者更好地理解十进制到二进制转换的过程。 #### 转换正数到二进制 首先,我们来关注一下如何将正整数转换为二进制表示。在`i2Bs`方法中,正数转换的流程如下: 1. ...

    Java进制转换,十六进制、十进制、二进制

    Java进制转换 正整数的十进制转换二进制 ...二进制转换为十进制 二进制转十进制的转换原理:从二进制的右边第一个数开始,每一个乘以2的n次方,n从0开始,每次递增1。然后得出来的每个数相加即是十进制数

    JAVA中的进制转换

    - 可以先将二进制转换为十进制,再转换为目标进制。 - 或者使用位运算符,例如二进制与八进制之间的转换,可以逐位处理。 4. **八进制与十六进制的转换**: - 同样,可以先转换为十进制,再转换为目标进制。 - ...

    Java程序十进制转二进制,八进制,十六进制

    在Java编程语言中,将十进制...总的来说,理解并熟练掌握这些进制转换在Java编程中至关重要,特别是在处理位运算、数据存储和网络通信等场景。通过Transform.java这样的简单程序,开发者可以更好地理解和实践这些概念。

    四种进制转换

    本代码用JAVA语言编写,实现了十进制,二进制,十六进制和八进制的转换

    java实现各进制之间转换

    // 将二进制转换为十进制 String octal = Integer.toOctalString(decimal); // 将十进制转换为八进制 ``` 2. **八进制转二/十/十六进制** 同样的,我们可以先将八进制数转换为十进制,再转换为其他进制。例如,...

    Java实现任意进制的转换

    在编程领域,进制转换是一项基础且重要的...以上就是Java实现任意进制转换的方法,包括二进制转十六进制、十进制转任意进制以及36进制加法。理解这些概念和方法,对于理解和编写处理数字系统转换的Java代码至关重要。

    JAVA实现十进制整数(正负)转换为二进制输出

    任意输入一个十进制整数,包括正数负数,通过程序实现可以输出相应的二进制编码

    Java进制转换实现

    本文将深入探讨Java中如何进行进制转换,包括二进制、八进制、十进制和十六进制之间的转换。这对于任何对Java感兴趣或者正在学习Java的开发者来说都是必备的知识点。 首先,我们来看一下如何在Java中进行基本的进制...

    Java迭代10进制转换2进制

    Java迭代10进制转换2进制.

    JAVA实用进制转换

    对于从十六进制、八进制或二进制转换回十进制,我们可以使用`Integer.valueOf(String s, int radix)`方法。 - **十六进制转十进制**: - 示例:`Integer.valueOf("FFFF", 16).toString()` 返回 `"65535"` (十六进制...

    Java进制转换器窗体设计(一)

    本程展示如何使用Java中Swing程序来设计进制转换器,实现十进制到二进制,八进制,十六进制的转换。

    使用java将十进制整数转换为二进制数

    本代码信息: 使用语言:java 功能:将整数(包括正负整数)转换成对应的二进制数,然后再控制台上显示。

    java_十进制数转换为二进制,八进制,十六进制数的算法

    在Java编程语言中,将十进制数转换为二进制、八进制或十六进制是常见的数据处理任务,尤其是在计算机科学与信息技术领域。本文将深入探讨如何使用Java实现这些转换,包括算法原理和具体代码实现。 ### 十进制转二...

Global site tag (gtag.js) - Google Analytics