Java 表示无符号整数

本文将介绍在 java 中怎样表示无符号整数,下面将以 byte 为例。

在 java 中,所有的数字都是有符号的,即可以表示负数,也可表示正数,如:byte、short、int、long、float 和 double)。例如:byte,长度为8位;如果是无符号的,则可以表示的范围为 0~2^8(0~255);如果是有符号的,则可以表示的范围为 -128~127。

实例:我们以 0xB8 为例,该实例将借助 Windows 自带的计算器进行分析。如下:

(1)打开计算器,选择“程序员”模式,选择“HEX”,输入B8。如下图:

Java 表示无符号整数

在上图中,D8 的 二进制 1011 1000,最高位为 1,则为负数(十进制-72)。我们点击“BYTE”按钮,将 byte 扩展为 word。扩展后如下图:

Java 表示无符号整数

此时,B8扩展为FFB8,但是十进制还是-72,而二进制为 1111 1111 1011 1000,和前面 byte 的二进制 1011 1000,只是在前面添加了8个1。而我们的目的是将二进制 1011 1000 完全当做数字显示,而不把第一位当做符号位。因此,可以使用与(&)操作符,将二进制 1111 1111 1011 1000 前面的 8 个1全部设置为0,得到 0000 0000 1011 1000,这样就得到我们所要的无符号表示了。

1111 1111 1011 1000
0000 0000 1111 1111      & 与
------------------------------------
0000 0000 1011 1000

接下来我们就可以写 java 代码来验证,代码如下:

public class Test {

    public static void main(String[] args) {
        byte b = (byte)0xB8;
        System.out.println("b=" + b);

        short s = (short)b;
        System.out.println("s=" + s);

        s = (short)(s & 0x00FF);
        System.out.println("s=" + s);
    }

}

输出结果:

b=-72
s=-72
s=184

上面仅仅演示了 byte 的转换方法,short、int 依次类推。

自知之明是最难得的知识。——西班牙
1 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号