【发布时间】:2015-04-04 20:23:34
【问题描述】:
private static long permute(byte[] table, int srcWidth, long src) {
long dst = 0;
for (int i=0; i<table.length; i++) {
int srcPos = srcWidth - table[i];
dst = (dst<<1) | (src>>srcPos & 0x01);
}
return dst;
}
这里 dst = (dst>srcPos & 0x01);这是如何运作的??我假设 |是 OR 运算符吗?
【问题讨论】:
-
这不是定义变量。而
|就是bitwise inclusive or operator。当您问“这是如何工作的”时,您想知道什么? -
它将
dst左移 1 位,然后按位或与src一起执行。从左到右考虑每个操作。 -
@AndyTurner 你能简要解释一下我特别标记的那行是如何工作的吗?
-
@user2475511 你有什么不明白的地方?
|运算符如何工作,或者整个表达式如何组合在一起?如果是后者,请记住|仅适用于两个数字。dst << 1是一个数字,src >>srcPos & 0x01也是。这与dst = (dst + 1) * ( (src + srcPos) / 0x01)之类的内容基本上没有什么不同,只是运算符不同且不太熟悉。
标签: java variables operator-keyword