Dúvida conversão hexa

Tenho feito simulados onde sempre aparecem questões do tipo abaixo, gostaria de saber qual a melhor forma de resolvê-las.
Devo passar para binário, calcular o resultado da operação e depois converter para hexa novamente ?

class EBH019 {
public static void main (String args[]) {
int i1 = 0xffffffff, i2 = i1 << 1;
int i3 = i1 >> 1, i4 = i1 >>> 1;
System.out.print(Integer.toHexString(i2) + “,”);
System.out.print(Integer.toHexString(i3) + “,”);
System.out.print(Integer.toHexString(i4));
}}

http://www.guj.com.br/posts/list/17839.java

http://www.guj.com.br/posts/list/19527.java

[]'s Tjmm.