Java中的pipe道(|)运算符
我已经在Java中得到了这个声明:
System.out.println(3|4);
为什么输出7?
这是一个按位或运算。 它正在修改二进制级别的东西。
011 3 in binary: | 100 in decimal: | 4 ___ ___ 111 7
使用科学模式打开Windows计算。 您可以在十进制和二进制(和hex)之间进行切换,并执行按位运算,包括或,和,异或等。
要做一个按位或在你的头或纸上,比较相同的序号的每个数字。 如果其中一个数字是1,那么这个序数的结果就是1。
运营商|
做一个“按位或”。 如果两个位中的任一位为1或0,则两位上的按位“或”输出为1.如果两位中的任一位均为0,则两位上的按位“或”只是单独对每位进行按位“或”运算。
如何3|4
作品:
3: 00000011 4: 00000100 -------------- 3|4: 00000111 = 7
它是bitwise OR
运算,3 OR
4是7。
看到这里: http : //en.wikipedia.org/wiki/Bitwise_OR#OR
二进制表示:
3 = 00000011 4 = 00000100 | is bitwise OR operator
当你或两个数字,你采取二进制表示和OR结果是1 IFF该列至less有一列设置为真(1)
所以
00000011 00000100 -------- 00000111
那么,专栏告诉你在那个位置的价值:
128, 64, 32, 16, 8, 4, 2, 1
所以
128, 64, 32, 16, 8, 4, 2, 1 0 , 0, 0, 0, 0, 1, 1, 1
任何具有1的列表示您添加该列的值:
4 + 2 + 1 = 7
| 是“按位还是”运算符。 在| b中,如果a和/或b的第n位是1,则结果的第n位将是1. 3是二进制的11。 4是二进制的100。
0 1 1 or or or 1 0 0 = = = 1 1 1
111恰好是7的二进制表示。
认识到有一个统计基础的广义系统是有用的。 二进制是基数2。 熟悉的十进制是基数为10。 Linux权限八进制为8。
数字的值是通过将每个数字的各个值相加得到的。 对于任何数字,该值都是从一个简单的公式导出的。
(数字)*(基数)^(小数点左边的位数)
123 =(1 * 10 ^ 2)+(2 * 10 ^ 1)+(3 * 10 ^ 0)= 100 + 20 + 3
我了解到,在CS211(不吹牛,只是记得)
由于按位运算符可能会有点混淆,而没有将它们与之关联起来,所以我向非程序员解释它们的function的方法是,你只需要将1replace为true,将0replace为false,然后它们的行为与英语这门语言:
月亮是蓝色的,天空是蓝色的,是假的
0和1是0
月亮是蓝色的或天空是蓝色的,是真的
0或1是1
但是当我到达时,这个比喻就被打破了:
海洋是蓝色的异或树是绿色的,是假的