Java中&是什么意思?
在java赋值运算符中遇到这样一个题:inti1=9;i1&=3;请问i1&=3的输出结果是多少?...
在java赋值运算符中遇到这样一个题:
int i1=9;
i1&=3;
请问i1&=3的输出结果是多少? 展开
int i1=9;
i1&=3;
请问i1&=3的输出结果是多少? 展开
展开全部
&在java中表示位运算符即,按位与运算。用来对二进制位进行操作,为二元运算符,智能为整型和字符型数据。
如果两个运算数都是1,则结果为1.其他情况下,结果均为零:
00101010(十进制值为42)&00001111(十进制值为15)=00001010(十进制值10)
而在java语言中 i1&=3的表达式的展开形式为:i1=i1&3,即使i1与3进行按位于运算,然后将值赋值给i1
所以i1&=3:
i1=i1&3
i1=9&3
=1001(9的二进制值)&0011(3的二进制值)
=0001
=1(1的二进制值为0001)
所以输出结果应为5
如果两个运算数都是1,则结果为1.其他情况下,结果均为零:
00101010(十进制值为42)&00001111(十进制值为15)=00001010(十进制值10)
而在java语言中 i1&=3的表达式的展开形式为:i1=i1&3,即使i1与3进行按位于运算,然后将值赋值给i1
所以i1&=3:
i1=i1&3
i1=9&3
=1001(9的二进制值)&0011(3的二进制值)
=0001
=1(1的二进制值为0001)
所以输出结果应为5
展开全部
&是按位与的意思
int i1 = 9;
i1&=3 ;
这个表达式的意思是:
i1 = i1&3
也就是9&3
即 9的二进制 1001
3的二进制 0011 按位与
0001
答案: i1的值 1
int i1 = 9;
i1&=3 ;
这个表达式的意思是:
i1 = i1&3
也就是9&3
即 9的二进制 1001
3的二进制 0011 按位与
0001
答案: i1的值 1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那个应该是位与运算符
它是先把那个9和3换算成二进制数,如9就是101,而3是11
再与按位与,就是
101
11
----------
其中相都为1的就为1,有一个不为真的就为假,所以
最后的值应该是1
它是先把那个9和3换算成二进制数,如9就是101,而3是11
再与按位与,就是
101
11
----------
其中相都为1的就为1,有一个不为真的就为假,所以
最后的值应该是1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
移位运算符
移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。左移位运
算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。“有符号”右移位
运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了
“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java 也添加了一种“无符号”右
移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C 或C++没有的。
若对char,byte 或者short 进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的
5 个低位才会用到。这样可防止我们在一个int 数里移动不切实际的位数。若对一个long 值进行处理,最后
得到的结果也是long。此时只会用到右侧的6 个低位,防止移动超过long 值里现成的位数。但在进行“无
符号”右移位时,也可能遇到一个问题。若对byte 或short 值进行右移位运算,得到的可能不是正确的结果
(Java 1.0 和Java 1.1 特别突出)。它们会自动转换成int 类型,并进行右移位。但“零扩展”不会发
生,所以在那些情况下会得到-1 的结果。可用下面这个例子检测自己的实现方案:
public class URShift {
public static void main(String[] args) {
int i = -1;
i >>>= 10;
System.out.println(i);
long l = -1;
l >>>= 10;
System.out.println(l);
short s = -1;
s >>>= 10;
System.out.println(s);
byte b = -1;
b >>>= 10;
System.out.println(b);
}
}
移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。左移位运
算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。“有符号”右移位
运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了
“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java 也添加了一种“无符号”右
移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C 或C++没有的。
若对char,byte 或者short 进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的
5 个低位才会用到。这样可防止我们在一个int 数里移动不切实际的位数。若对一个long 值进行处理,最后
得到的结果也是long。此时只会用到右侧的6 个低位,防止移动超过long 值里现成的位数。但在进行“无
符号”右移位时,也可能遇到一个问题。若对byte 或short 值进行右移位运算,得到的可能不是正确的结果
(Java 1.0 和Java 1.1 特别突出)。它们会自动转换成int 类型,并进行右移位。但“零扩展”不会发
生,所以在那些情况下会得到-1 的结果。可用下面这个例子检测自己的实现方案:
public class URShift {
public static void main(String[] args) {
int i = -1;
i >>>= 10;
System.out.println(i);
long l = -1;
l >>>= 10;
System.out.println(l);
short s = -1;
s >>>= 10;
System.out.println(s);
byte b = -1;
b >>>= 10;
System.out.println(b);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
9&3=1
0000 0000 0000 0000 0000 0000 0000 1001
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001
应该是1吧
0000 0000 0000 0000 0000 0000 0000 1001
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001
应该是1吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询