Как мне написать это выражение C в J?

Как мне написать это выражение C в J ​​? (где x - входное целое число, а a - временная переменная)

((a= ~x & (~x >> 1)) ^= a ? 0 : (a ^ (a & (a - 1))) | (a ^ (a & (a - 1))) << 1);

.

Изменить:

В более удобочитаемой форме:

    int a = (~x) & ((~x) >> 1);
    if (a == 0) return 0;
    int b = a ^ (a & (a - 1));
    return b | (b << 1);

6
задан Margus 29 September 2010 в 23:15
поделиться