Operações bit a bit em curto

Eu estou usando uma tecnologia chamada DDS e no IDL, ele não suporta int . Então, eu imaginei que eu usaria apenas short . Eu não preciso de tantos bits. No entanto, quando faço isso:

 short bit = 0; System.out.println(bit); bit = bit | 0x00000001; System.out.println(bit); bit = bit & ~0x00000001; bit = bit | 0x00000002; System.out.println(bit); 

Ele diz “Tipo incompatível: não é possível converter de int para curto”. Quando mudo short para long , funciona bem.

É possível executar operações bit a bit como isso em um short em Java?

Ao fazer qualquer aritmética em byte , short ou char , os números são promovidos para o tipo mais largo int . Para resolver seu problema, explique explicitamente o resultado de forma short :

 bit = (short)(bit | 0x00000001); 

Links:

Meu entendimento é que o java não suporta valores literais curtos. Mas isso funcionou para mim:

 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);