java位运算符的计算题(java位运算符详解)
JAVA位运算符
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。
1.与运算符
与运算符用符号“”表示,其使用规律如下:
两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。
public class data13
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 与的结果是:"+(ab));
}
}
运行结果
a 和b 与的结果是:128
下面分析这个程序:
“a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。
2.或运算符
或运算符用符号“|”表示,其运算规律如下:
两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。
public class data14
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 或的结果是:"+(a|b));
}
}
运行结果
a 和b 或的结果是:129
下面分析这个程序段:
a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。
3.非运算符
非运算符用符号“~”表示,其运算规律如下:
如果位为0,结果是1,如果位为1,结果是0,下面看一个简单例子。
public class data15
{
public static void main(String[] args)
{
int a=2;
System.out.println("a 非的结果是:"+(~a));
}
}
4.异或运算符
异或运算符是用符号“^”表示的,其运算规律是:
两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子。
public class data16
{
public static void main(String[] args)
{
int a=15;
int b=2;
System.out.println("a 与 b 异或的结果是:"+(a^b));
}
}
运行结果
a 与 b 异或的结果是:13
分析上面的程序段:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。
JAVA编程 位运算符 问题
这是在二进制下的比较
a=129在二进制下是1000
0001
b=128在二进制下是1000
0000
这两段二进制数中的每一个0或者每一个1就是一个位
这两个对其比较都为1的话结果为1,其他情况为0
希望我的回答对你有帮助
java 运算符 计算题
a*b = 1 * 2 = 2;
c/2 = 3 / 2 = 1; (除法只取整数部分,小数部分舍弃)
2*(a+b)/c = 2*(1+2)/3 = 2*3/3 = 6/3 = 2;
2 + 1 + 2 = 5;
我不知道为什么上面的答案说题目有问题?
JAVA里的运算符问题
1.
"+"如果是数值运算
int
a
=
1,b
=
2;则a
+
b
=
3
如果是2个字符串相加
其功能就是
String
a
=
"a",b
=
"b";则a
+
b
=
"ab";
2.位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。
位运算符有:
(按位与)、|(按位或)、^(按位异或)、~
(按位取反)。
其中,按位取反运算符是单目运算符,其余均为双目运算符。
位运算符的优先级从高到低,依次为~、、^、|,
其中~的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符。
按位与运算将两个运算分量的对应位按位遵照以下规则进行计算:
=
0,
1
=
0,
1
=
0,
1
1
=
1。
即同为
1
的位,结果为
1,否则结果为
0。
逻辑运算
(logical
operators)
通常用来测试真假值。最常见到的逻辑运算就是循环的处理,用来判断是否该离开循环或继续执行循环内的指令。
小于;
大于;=
小于或等于;=
大于或等于;==
等于;!=
不等于;
而且
(And);and
而且
(And);||
或者
(Or);or
或者
(Or);xor
异或
(Xor);!
不
(Not)
3.
表示前后2个条件一定要同时满足
才能为真
有一个条件为假的时候就是假
则不执行
一般用在
if(x
y
0)
{
System.out.print("x和y都是大于0");
}
else
{
System.out.print("x和y中有一个不是正数");
}
"||"这个“或”呢
属于条件取舍型的,也就是说c
=
a||b
只要a或者b为真的时候
这条表达式c就是为真
4.
右移
System.out.println(-31);
结果是-2,为什么会是-2呢?下面我们来看一下.
System.out.println(Integer.toHexString(-3));得到-3的16进制为fffffffd(此为-3的补码,计算机中负数用补码表示).
转换成2进制为1111
1111
1111
1111
1111
1111
1111
1101
右移一位为1111
1111
1111
1111
1111
1111
1111
1110,显而易见此为-2补码.
左移
System.out.println(-31);左移相对来说比较简单.
1111
1111
1111
1111
1111
1111
1111
1101左移一位为
1111
1111
1111
1111
1111
1111
1111
1010,其为-6的补码.
无符号右移
System.out.println(-31);
1111
1111
1111
1111
1111
1111
1111
1101无符号右移,高位补0,
01111
1111
1111
1111
1111
1111
1111
1110,其为2147483646的原码.
java无符号右移位运算符,题目如下,231-1是什么意思,急,谢谢!
这个答案就有问题,
如果表达式时-11
无符号右移1位,但是在java中默认-1就是int类型,占用四个字节。结果是2147483647
如果此题按照一个字节8位来算的话,结果也就127
至于上面的四个答案是怎么得出来的,天晓得。
后来搜了下问题所在,你这个东西就是盗版印刷。原题印刷应该这样
java使用位运算符,计算53x32的值
左移一位相当于乘以2,32 等于 2 的 5 次方,所以左移 5 位,即可算出 53 * 32 的值。代码如下:
public?class?App47?{
public?static?void?main(String[]?args)?{
System.out.println(53??5);
System.out.println(53?*?32);
}
}