Bitwise Operations简称

时间:2011-08-10 18:40:35

标签: java bit-manipulation

我使用的是名为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执行这样的按位操作?

2 个答案:

答案 0 :(得分:10)

byteshortchar进行任何算术时,数字会提升为更宽的类型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);