Tag: bitwise operators

在不使用条件代码的情况下确定数字是奇数还是偶数

如何在不使用Java中的条件或三元运算符的情况下查找数字是奇数还是偶数? 这个问题是我的老师给出的。 他还给我一个暗示,通过使用按位运算符是可能的。

按位左移行为

今天我正在学习左移位操作符( << )。 据我所知,左移位操作符按指定向左移动位。 而且我知道转移乘以2。 但我很困惑,就像“移位”究竟是什么意思一样,为什么当用不同的类型赋值时输出会有所不同? 当我调用下面的函数时,它输出为System.out.println(“b=”+b); //Output: 0 System.out.println(“b=”+b); //Output: 0 而我的问题是:b如何变为0,为什么b被类型化? public void leftshiftDemo() { byte a=64,b; int i; i=a << 2; b=(byte)(a<<2); System.out.println("i="+i); //Output: 256 ie 64*2^2 System.out.println("b="+b); //Output: 0 how & why b is typecasted } 更新 (新疑点): 这是什么意思“如果你将1位移到高位(位31或63),该值将变为负值”。 例如。 public void leftshifHighOrder() { int i; int num=0xFFFFFFE; for(i=0;i<4;i++) { num=num<<1; […]

除以2哪一个更好的右移算子或传统的除法运算符?

在阅读Collections.reverse方法的Java源代码时, Right Shift operator is used for finding middle. …… for (int i=0, mid=size>>1, j=size-1; i<mid; i++, j–) // Right Shift swap(list, i, j); ….. 使用传统的2分法可以做到同样的事情。 我探讨了堆栈右移以执行除法,并发现它更好地使用除法运算符而不是右移。 更新 : But then why java guys used Right Shift and not division ? So which approach is better to use and Why ?

(int)Math.pow(2,x)和1 << x的Java结果不同

为什么以下两个操作在Java中为x = 31或32产生不同的结果,但x=3结果相同? int x=3; int b = (int) Math.pow(2,x); int c = 1<<x; 结果: x=32: b=2147483647; c=1; x=31: b=2147483647; c=-2147483648; x=3: b=8 ; c=8

使用按位运算符在一个int中打包多个值

低级别位操作从来都不是我的强项。 我将理解一些有助于理解以下bitwise运算符的用例。考虑… int age, gender, height, packed_info; . . . // Assign values // Pack as AAAAAAA G HHHHHHH using shifts and “or” packed_info = (age << 8) | (gender <> 7) & 1; age = (packed_info >> 8); 我不确定这段代码是完成的以及如何完成? 为什么要使用幻数0x7F? 如何完成包装和拆包? 资源

Java中的按位AND(&)表达式

我正在调试其中包含expr1 & expr2代码,其中expr1具有影响expr2评估结果的副作用。 我怀疑expr2会在expr1之前得到评估,因为JLS保证对&&进行从左到右的评估,但不一定是& 。 我还怀疑评估顺序的更改可能是HotSpot执行优化的结果(我们正在运行Java 6u20)。 你知道HotSpot能否进行这样的优化吗? 更好的是,提供支持或消除怀疑的文档的任何指针。 提前致谢。 编辑:感谢那些建议重写代码的人,所以它既正确又可读 – 你是对的,但我已经做了,所以这不是我想要的。 不幸的是,很难测试这个变化,这就是为什么我在这里问这个问题。

如何通过位运算符在java中处理布尔值

请考虑这个例子 int i=11, j=5; boolean b=true, c=false; System.out.println(b&c); // –> output=false System.out.println(i&j); // –> output=1 有点位置和运算符是如何处理布尔变量的?

“int style = SWT.APPLICATION_MODAL |中的”|“是什么? SWT.OK;“做(以及如何谷歌)?

我无法搜索| 在谷歌。 如果你在一个你试图解释的软件源代码中找到它,你不知道它做了什么,你不能向其他人寻求帮助,你怎么知道它的作用?

在C#中等效的Java三class制运算符(>>>)?

Java的>>>运算符的等价物(在C#中)是什么? (只是为了澄清,我不是指>>和<<运算符。)

什么是按位操作?

我正在研究名为Beginning Android Games的书。 我注意到的一件事是: int action = event.getAction() & MotionEvent.ACTION_MASK; int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT; 这是我见过类似变量的第一次,所以我不知道它是做什么的。 我在java中运行代码并创建了一些示例。 如果我运行此代码: int i = 10 >> 500; System.out.print(“Answer ” + i); 答案是0? 这是为什么? 如果我运行此代码: int i = 10 & 500; System.out.print(“Answer ” + i); 起初我认为这是价值的连接所以我会假设我= 10500但事实并非如此。 答案是一样的。 还是0? 谁知道这里发生了什么?