为了账号安全,请及时绑定邮箱和手机立即绑定

&操作符的疑惑

&操作符的疑惑

cainiaoqianjin 2016-04-14 13:52:28
package com.imooc;import java.lang.*;import java.util.Arrays;public class Main { public static void main(String[] args) { int a = -1; long b = (long)a & (long)0xffffffff;  //为啥b会等于-1不应该是个正数吗 System.out.println(b); short c = -1; int d = c & 0xff; System.out.println(d); //这里d为255 }}
查看完整描述

1 回答

?
HansonQ

TA贡献223条经验 获得超56个赞

public class A {
	public static void main(String[] args) {
		int a = -1;
		//两个操作数中 位都为1,结果才为1,否则结果为0,例如下面的程序段 这是&运算符
		long b = (long) a & (long) 0xffffffff; // 为啥b会等于-1不应该是个正数吗
		System.out.println(b);
		short c = -1;
		int d = c & 0xff;
		//类型转换 
		System.out.println(d); // 这里d为255
	}
}


查看完整回答
反对 回复 2016-04-14
  • cainiaoqianjin
    cainiaoqianjin
    哦,我知道了,不应该写成(long)0xffffffff,而应该是0xffffffffL 不过还是很谢谢你 package com.imooc; import java.lang.*; import java.util.Arrays; public class Main { public static void main(String[] args) { int a = -1; long b = (long)a & 0xffffffffL; //运行时等于4294967295 System.out.println(b); short c = -1; int d = c & 0xff; System.out.println(d); //这里d为255 } }
  • cainiaoqianjin
    cainiaoqianjin
    哦,我知道了,不应该写成(long)0xffffffff,而应该是0xffffffffL 不过还是很谢谢你 package com.imooc; import java.lang.*; import java.util.Arrays; public class Main { public static void main(String[] args) { int a = -1; long b = (long)a & 0xffffffffL; //运行时等于4294967295 System.out.println(b); short c = -1; int d = c & 0xff; System.out.println(d); //这里d为255 } }
  • cainiaoqianjin
    cainiaoqianjin
    不好意思,提交上去代码就成这样了,不知道怎么回事弄在一起了
点击展开后面1
  • 1 回答
  • 0 关注
  • 1187 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信