我创建一个面具,像这样在很短的设置较高位:对Java AND'ing的短有短的,它升级为int和返回值怪异
enum FLAGS {FLAG1, FLAG2, FLAG3, FLAG4, FLAG5, FLAG6};
public static void setFlag(short len, FLAGS flag) {
short mask = 1 << (Short.SIZE - flag.ordinal() - 1);
len |= mask;
}
我打印的值:
len: 0000001111111100
mask : 1000000000000000
after OR'ing with mask: 11111111111111111000001111111100
我明白,当我们做位操作短裤他们upgrded为int,以避免溢出,但为什么设置所有的高位呢?我怎么能简单地设置前6位中的任何一个,而没有任何搞笑演员?
除了这个问题,你应该考虑使用'BitSet'来代替。 –