Rispondo alla seconda domanda.
Solitamente, se vuoi considerare solo parte dei bit, usi le maschere di bit.
Ad esempio, per prendere solo i primi 3 bit significativi di 0x75:
codice:
package desktop;
public class Main
{
public static void print(String s, int r)
{
for(int i = 0; i < r; i++)
System.out.print(s);
System.out.println();
}
public static void f(int x, int mask)
{
int y = x & mask;
System.out.println(Integer.toBinaryString(y));
System.out.println(y);
}
public static void main(String[] args)
{
int x = 0x75;
int mask = 0x70;
String sx = Integer.toBinaryString(x);
String smask = Integer.toBinaryString(mask);
System.out.println(sx);
System.out.println(smask);
print("-", Math.max(sx.length(), smask.length()));
f(x, mask);
}
}
La classe Integer fornisce qualche altro metodo per manipolare bit, ma non credo facciano al tuo caso.