我使用的是名为DDS的技术,在IDL中,它不支持int
。所以,我想我会使用short
。我不需要那么多位。但是,当我这样做时:
short bit = 0;
System.out.println(bit);
bit = bit | 0x00000001;
System.out.println(bit);
bit = bit & ~0x00000001;
bit = bit | 0x00000002;
System.out.println(bit);
它说“类型不匹配:无法从int转换为short”。当我将short
更改为long
时,它可以正常工作。
是否可以在Java中的short
执行这样的按位操作?
答案 0 :(得分:10)
对byte
,short
或char
进行任何算术时,数字会提升为更宽的类型int
。要解决您的问题,请将结果显式转换回short
:
bit = (short)(bit | 0x00000001);
链接:
答案 1 :(得分:2)
我的理解是java不支持短文字值。但这对我有用:
short bit = 0;
short one = 1;
short two = 2;
short other = (short)~one;
System.out.println(bit);
bit |= one;
System.out.println(bit);
bit &= other;
bit |= two;
System.out.println(bit);