懂JAVA的帮帮忙呀!

练习:将一个整数110从右端开始的4-7位变为0用JAVA遍出来呀我才开始学习这道联系题我就是转不过来提示说是用底4位也就是15左移3位再按位取反然后再和110按位与可我... 练习:将一个整数110从右端开始的4-7位变为0
用JAVA遍出来呀
我才开始学习 这道联系题我就是转不过来 提示说是用底4位也就是15左移3位 再按位取反 然后再和110按位与 可我就是弄不懂
请各位高手帮忙呀!!最好把每步都解释下!
要能让我转过弯在加分哈!!!
谢谢!
110的二进制是1101110,从右端开始的4-7位是1110 也就是底4位,把这4为变为0,就要用的数应该是1110000吧。我是在孙鑫老师的视频是学习的,他提示说是用15左移3位后取反再与,要这样的话15二进制是00001111,左移3位是01111000。再取反是10000111呀,我怎么想也想不通!
展开
 我来答
neu_hubs
2007-05-24 · TA获得超过196个赞
知道小有建树答主
回答量:169
采纳率:100%
帮助的人:257万
展开全部
我明白了,Java里面int类型都是32位的,你的需求是:将一个整数110从右端开始的4-7位变为0 (注意这里不是从左端开始数)
所以应该将
110:
00000000000000000000000001101110
变为:
00000000000000000000000000000110
也就是要 与运算 一个这样的数:
xxxxxxxxxxxxxxxxxxxxxxxxx0000111

这里x可以是0或者1(因为110前面的二进制位都是0,所以x是0和1都无所谓),但是如果要保持相对应的位不变,x须为1。(如果给定的整数是-110,那么前面的二进制位就都是1了,x为0就不能满足要求了)

所以
int: 15, binary:
00000000000000000000000000001111
左移3位,然后再取反,正好符合要求。:)
~(15 << 3), int: -121, binary:
11111111111111111111111110000111

----------------
下面的代码可以打印出一个整数的二进制值,供你测试使用(核心代码来自Java编程思想):

public class BitOperation {

public static void main(String[] args) {
int a = 110;
pBinInt("a",a);
pBinInt("15",15);
int b = ~(15 << 3);
pBinInt("b",b);
pBinInt("a&b",a&b);
}

// 打印一个整数的二进制值
static void pBinInt(String s, int i) {
System.out.println(
s + ", int: " + i + ", binary: ");
//System.out.print(" ");
for(int j = 31; j >=0; j--)
if(((1 << j) & i) != 0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}

// 打印一个长整数的二进制值
static void pBinLong(String s, long l) {
System.out.println(
s + ", long: " + l + ", binary: ");
System.out.print(" ");
for(int i = 63; i >=0; i--)
if(((1L << i) & l) != 0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}

}
萨依法
2007-05-24 · TA获得超过624个赞
知道小有建树答主
回答量:1301
采纳率:0%
帮助的人:798万
展开全部
与 一个 长度相同
4-7 是 0 其他都是 1 的 数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pegasuscjg
2007-05-24 · 超过25用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:0
展开全部
int a=110;//二进制数是1101110
a=a & 7;
//你想从右4-7位也就是110来说左边4位了。那就用7(111)
结果a=6(0000110)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式