在Java中关于二进制、八进制、十六进制的辨析

简介: 在Java中关于二进制、八进制、十六进制的辨析

八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数?单从数字的角度来讲都有可能!

八进制

所以在Java中规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数的表达方法。

123如果是十进制的话是123,八进制的话,则是83,如在变量赋值时可以以十进制的方式赋值int a = 83; 也可以以八进制的方式赋值,int a= 0123;得到的是同样的结果。

十六进制

如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。

16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母O)

如int b = 1;int b=0x1;是同样的含义,int b = 17;与int b = 0x11;表达的是同样的值。

不区分正负

10进制数有正负之分,比如12表示正12,而-12表示负 12。但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2,编译器并不把它当成一个负数。

package com.lingyejun.blog;
public class HexNum {
    public static void main(String[] args) {
        int a10 = 99;
        int a2 = 0b101;
        int a8 = 0143;
        int a16 = 0x63;
        System.out.println(a10);
        System.out.println(a2);
        System.out.println(a8);
        System.out.println(a16);
        int ma10 = -99;
        int ma2 = -0b101;
        int ma8 = -0143;
        int ma16 = -0x63;
        System.out.println(ma10);
        System.out.println(ma2);
        System.out.println(ma8);
        System.out.println(ma16);
        char c = '李';
        System.out.println("字母A在char中的编号" + Integer.toString('A') + " " + Integer.toBinaryString('A'));
        System.out.println("字母a在char中的编号" + Integer.toString('a'));
        System.out.println("char 字符 李 用二进制表示为 :" + Integer.toBinaryString(c));
        System.out.println("char 字符 李 用八进制表示为 :" + Integer.toOctalString(c));
        System.out.println("char 字符 李 用十六进制表示为 :" + Integer.toHexString(c));
    }
}

执行结果:

目录
相关文章
|
19天前
|
Java
Java中整数(负数)的二进制表示
Java中整数(负数)的二进制表示
|
19天前
|
传感器 数据采集 网络协议
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
35 4
|
19天前
|
Java
Java实现十进制到各种进制的转换
这段代码可以让用户输入一个十进制数,然后将其转换为二进制、八进制和十六进制表示。实现了基本的转换功能,满足你的要求。
26 0
|
19天前
|
Java 数据处理
Java:将一个数转换为十六进制
Java:将一个数转换为十六进制
|
19天前
|
算法 Java 数据处理
Java:将一个数转化为二进制
Java:将一个数转化为二进制
|
19天前
|
机器学习/深度学习 Java 程序员
Java基础之二进制,八进制,十进制,十六进制相互转换
Java基础之二进制,八进制,十进制,十六进制相互转换
|
3天前
|
Java 开发者 UED
掌握Java多线程编程:从基础到高级
【5月更文挑战第31天】本文深入探讨了Java多线程编程的核心概念,包括线程的创建、生命周期、同步机制以及高级并发工具。通过实际示例和代码片段,读者将学会如何有效地管理和协调线程,以编写高效且稳定的并发应用程序。
|
3天前
|
安全 Java 调度
Java语言多线程编程技术深度解析
Java语言多线程编程技术深度解析
|
3天前
|
存储 安全 Java
深入理解Java并发编程:线程安全与锁机制
【5月更文挑战第31天】在Java并发编程中,线程安全和锁机制是两个核心概念。本文将深入探讨这两个概念,包括它们的定义、实现方式以及在实际开发中的应用。通过对线程安全和锁机制的深入理解,可以帮助我们更好地解决并发编程中的问题,提高程序的性能和稳定性。
|
3天前
|
缓存 监控 安全
Java的线程池和线程安全
Java的线程池和线程安全