使用二进制运算的n个1

时间:2013-04-24 10:35:53

标签: c binary numbers

有没有办法只使用这些二元操作n1!,{{1}来获得~&个},^|+<<)其中>>是输入?

实施例,

n

2 个答案:

答案 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产生两个幂:1101001000,依此类推。添加负数会产生2^n-1,这是您的模式所代表的。

答案 1 :(得分:0)

是。你可以做到

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

示例:

说n是2。

  1. 〜(〜(1 <&lt; 2)+ 1)
  2. 〜(〜(100)+ 1)
  3. 〜(111..1011 + 1)
  4. 〜(111..1100)

    = 11