与(&)运算问题
程序目标:将一个整数110从右端开始的4~7位变为0;
程序
class Test
{
public static void main(String args[])
{
int m=110;
int b=15; //构建一个1~4位为1111的整数;
int u=b<<3; //让该整数有符号位移3位为4~7位为1111的整数
int q=~u; //对4~7位为1111的整数到反得到4~7位为0000其余位为1的整数
int w=q|m; //或运算进行比较
int h=q&m; // 进行与运算得到4~7位为0;
System.out.println(Integer.toBinaryString(m));
System.out.println(Integer.toBinaryString(q));
System.out.println(Integer.toBinaryString(w));
System.out.println(Integer.toBinaryString(h));
}
}
结果: 1101110
11111111111111111111111110000111
11111111111111111111111111101111
110
问题:为什么可以进行与运算进好像是110与 11111111111111111111111110000111进行了与运算而不是我想要的1101110与11111111111111111111111110000111进行的运算?而或运算却是1101110与11111111111111111111111110000111进行的却不是110与其比较.看起来矛盾的啊.
请教下高手们,怎样让1101110(即二进制)与其进行与运算?