void boolTest(boolean x, boolean y) {
x = x & y;//这几种用法结果和逻辑运算符一样啊,按位运算不是俺照每一位数字运算么,boolean怎么按位啊?
x = x | y;
x = x ^ y;
x &= y;
x ^= y;
x |= y;
}
void charTest(char x, char y) {
x = (char)+y;//这种用法什么意思??
x = (char)-y;
}
解决方案 »
- 想了一晚上都没想明白:请高手指点;对java输入输出中,字节流与字符流是不是可以相互转化的疑问?
- 静态(static)方法synchronized的问题
- 急!请教关于awt中实现菜单中一组单选按钮(RadioButton)的用法?小弟明天急用~~~~
- 关于表达式(请大家进来看看)
- 棘手的问题,尽情参加吧,求简单方法
- 一个菜鸟的大问题,急!!!-解决就给分!!!
- jb7的盗版盘有卖的吗?
- 我有Thing In Java(chm格式).谁要?
- java.mail怎么配置!!!谢谢谢谢
- Help : 这种情况怎样才能实现(关于IO类)
- 输出问题,帮忙解释一行代码?
- 偶“嗷嗷待哺“的初学者!高手,大虾进来指点一二,感激不尽!
& 布尔与
^ 布尔异或布尔逻辑运算符与逻辑运算符的运算结果是一致的,仅有一点不同:(a > b) && (b > c)
如果 a > b 为 false 的话,后面的 b > c 不会再进行比较,这种行为称为“短路运算”。(a > b) & (b > c)
如果 a > b 为 falser 的话,后面的 b > c 会再进行比较,这种行为称为“非短路运算”。布尔异或没有可取代的逻辑运算符
-------+-------+-------
& | true | false
-------+-------+-------
true | true | false
-------+-------+-------
false | false | false
-------+-------+-------布尔或真值表
-------+-------+-------
| | true | false
-------+-------+-------
true | true | true
-------+-------+-------
false | true | false
-------+-------+-------布尔异或真值表
-------+-------+-------
^ | true | false
-------+-------+-------
true | false | true
-------+-------+-------
false | true | false
-------+-------+-------
x = (char)-y; 这两个式子是互为比较的,主要说的是字符本来是无符号数,都是正数,但也可加符号,这个相当于转换为int数了,正号保持原字符,负号则要改变原字符,因为把原字符的最高一位改变了。
若x = (char)+y;后,x输出b
若x = (char)-y;后,x输出?为什么啊
2、
-y,先把'a'转为int的97 0000 0000 0000 0000 0000 0000 0110 0001,再加上符号位,这叫原码,变成
-97的原码 : 1000 0000 0000 0000 0000 0000 0110 0001 原码变为反码:除符号位按位取反:
-97的反码: 1111 1111 1111 1111 1111 1111 1001 1110反码变为补码:反码加1
-97的补码: 1111 1111 1111 1111 1111 1111 1001 1111任何整数在计算机内都是以补码的形式存在的。
3、
(char)-97 强制类型转换就是把字符的高的两个字节舍弃,只保留了低的两个字节。结果赋给x的是:
1111 1111 1001 1111。
public static void main(String[] args) {
char y='a';
char x=(char)-y;
System.out.print("字符y的值为:"+y+" 其二进制形式是:");
System.out.println(Integer.toBinaryString(y)); //这个y实际已经转为int类型了.
System.out.print("整数-y的值为:"+(-y)+" 其二进制形式是:");
System.out.println(Integer.toBinaryString(-y));
System.out.print("字符x的值为:"+(int)x+" 其二进制形式是:");
System.out.println(Integer.toBinaryString((int)x));
}} F:\java>java Lamp
字符y的值为:a 其二进制形式是:1100001
整数-y的值为:-97 其二进制形式是:11111111111111111111111110011111
字符x的值为:65439 其二进制形式是:1111111110011111