有没有办法只使用这些二元操作n
,1
,!
,{{1}来获得~
个&
个},^
,|
,+
,<<
)其中>>
是输入?
实施例,
n
答案 0 :(得分: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
,这是您的模式所代表的。
答案 1 :(得分:0)
是。你可以做到
~(~(1<<n) + 1)
示例:
说n是2。
〜(111..1100)
= 11