在Java中以二进制格式打印short类型的数据

5

在Java中是否有内置支持输出short的二进制表示的功能?

当然有,这里推荐使用Integer.toBinaryString(),它可以工作。但是没有可比较的Short.toBinaryString()。还有其他可用的方法吗?

更新: 如果存在Short.toBinaryString(),那么Integer.toBinaryString()并不能完全像它那样工作。

public static void main(String[] args) {
    System.out.println(Integer.toBinaryString(Short.MIN_VALUE));
}

产生
11111111111111111000000000000000

whereas I would like to see

1000000000000000

当然,剪掉前16个数字很容易,但这就是我的观点。这种方法应该存在。
1个回答

9
所有的短整型数据都可以安全地转换为整数,因此只要在进行转换之前将“short”值正确转换为“int”,那么链接中提供的答案就可以正常工作(通过这样做,我们确保了开头的数字被清零):
short x = 10;
System.out.println(Integer.toBinaryString(0xFFFF & x));
=> 1010

System.out.println(Integer.toBinaryString(0xFFFF & Short.MIN_VALUE));
=> 1000000000000000

换句话说,所有的short都是整数,因此没有必要定义一个单独的方法来获取short的二进制表示。

@SteveCohen,你说得对。需要进行一些调整,请查看我的更新答案。 - Óscar López
好的,有了这个修改,我就认为它很好了。没有比这更好的了。我希望Java的发明者没有那么快地放弃无符号数。 - Steve Cohen
@SteveCohen同意,他们这样做是为了简化语言,但无符号值非常有用,它们应该成为语言的一部分。 - Óscar López
1
嘿,试着与传统的C语言进行互操作吧。 :-) 欢迎来到我的世界。 - Steve Cohen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接