我創建一個面具,像這樣在很短的設置較高位:對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'來代替。 –