java 题 帮帮忙吧

将一个整数110从右端开始4~7位变为0

是用初级 j2se的 位运算和移位运算符来做的
我算的是
110的二进制为 1101110
将其取反为 0010001
将二原码位或 1111111
将此原码>>>2 0011111
将此原码取反 1100000
我算的答案是 96

但是用代码测试的话不是这个答案 谁告诉我
正确算法和答案好吗? 谢谢了
下面那些方法 我还没学 到 能不能用内存变化的形式 我理解呢?

下面是一种方法..做法很直接,因为是对字符串的操作,所以效率不一定高

public static void main(String[] args) {
int num = 110;
String strNum = Integer.toBinaryString(num);// 切换为二进制表示
System.err.println(strNum);// 打印二进制表示
int size = strNum.length();
char[] chs = strNum.toCharArray();
for (int i = size - 4; i > size - 8; i--) {
chs[i] = '0';// 将4-7位逐位改为0
}
strNum = new String(chs);// 产生新数字
System.err.println(strNum);// 打印新数字
int newNum = Integer.valueOf(strNum, 2);// 将新数字转为十进制表示
System.err.println(newNum);// 打印新数字
}

附位运算方法:

public static int work(int num) {
// String temp = "1111111111111111111111110000111";
// int num2 = Integer.valueOf(temp, 2);
int num2 = 2147483527;
System.err.println(num2);
int result = num & num2;
return result;
}

最终返回结果就是计算的结果.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-02
你不知道你是干嘛

110按你说的是
1101110
java中它是32位的
0000 0000 0000 0000 0000 0000 01101110
右端开始4~7位变为0
0000 0000 0000 0000 0000 0000 00000110
这不就得2+1=3了么?
相似回答