1

有什么方法可以 仅使用这些二进制运算(, , , , , , , )来获取 s 的n数量,输入在哪里?1!~&^|+<<>>n

例子,

n ---> output
0 ---> 0000
1 ---> 0001
2 ---> 0011
3 ---> 0111
4 ---> 1111
...
4

2 回答 2

3

你可以这样做:

// Since "-" is not on your list while "+" is, I'll add negative 1
// using `~0`; this assumes that your computer uses 2's complement
// representation of negative numbers.
(1 << n) + ~0;

这个想法是1 << n产生两个的幂:1, 10, 100, 1000, 等等。添加一个负数会产生2^n-1,这就是您的模式所代表的。

于 2013-04-24T10:38:49.553 回答
0

是的。你可以做

~(~(1<<n) + 1)

例子:

假设 n 为 2。

  1. ~(~(1<<2) + 1)

  2. 〜(〜(100)+ 1)

  3. 〜(111..1011 + 1)

  4. 〜(111..1100)

    = 11

于 2013-04-24T10:56:17.177 回答