有什么方法可以 仅使用这些二进制运算(, , , , , , , )来获取 s 的n数量,输入在哪里?1!~&^|+<<>>n
例子,
n ---> output
0 ---> 0000
1 ---> 0001
2 ---> 0011
3 ---> 0111
4 ---> 1111
...
你可以这样做:
// 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,这就是您的模式所代表的。
是的。你可以做
~(~(1<<n) + 1)
例子:
假设 n 为 2。
~(~(1<<2) + 1)
〜(〜(100)+ 1)
〜(111..1011 + 1)
〜(111..1100)
= 11