これらの二項演算 ( 、、、、、、)のみを使用して 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
の 2 の累乗を生成することです。負の値を追加すると が生成されます。これは、パターンが表すものです。1
10
100
1000
2^n-1
はい。できるよ
~(~(1<<n) + 1)
例:
n が 2 だとします。
~(~(1<<2) + 1)
~(~(100) + 1)
~(111..1011 + 1)
~(111..1100)
= 11