java short 无符号_Java 表示无符号整数

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

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

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

accc64015e7ddd68943871cee11bccfe.png

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

f524c5a29094563ec4e07db6bb3366df.png

此时,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 依次类推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值