*
、+
、-
、などの基本的な演算子を使用したビットごとの OR 演算の数式はあり/
ますか? 私が探しているものの例 (シフトの場合) は、にn<<a
変わりn*Math.pow(2,a)
ます。
1 に答える
1
アルゴリズムによる解決策を提案できます
public static void main(String[] args) throws Exception {
byte a = 0x14;
byte b = 0x1;
int c = or(a, b);
System.out.println(Integer.toHexString(c));
}
static int or(byte a, byte b) {
int c = 0;
for (int i = 0; i < 8; i++) {
if (bit(a, i) != 0 || bit(b, i) != 0) {
c += Math.pow(2, i);
}
}
return c;
}
static int bit(int x, int i) {
return x / (int) Math.pow(2, i) % 2;
}
1行の式に変換できますが、長すぎます
int c = (a % 2 != 0 ? 1 : b % 2 !=0 ? 1 : 0) + (a % 4 / 2 != 0 ? 2 : b % 4 / 2 !=0 ? 2 : 0) ...
これはビットを計算する方法です
int a0 = a % 2;
int a1 = a % 4 / 2;
int a2 = a % 8 / 4;
int a3 = a % 16 / 8;
int a4 = a % 32 / 16;
...
于 2013-04-24T03:41:59.850 に答える