有什么方法可以 仅使用这些二进制运算(, , , , , , , )来获取 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