2

[–1024, 1016] の間隔で数値を変換する必要があります。私はそのような11ビットに変換しています:

string s = Convert.ToString(value, 2); //Convert to binary in a string

int[] bits = s.PadLeft(11, '0') // Add 0's from left
                     .Select(c => int.Parse(c.ToString())) // convert each char to int
                     .ToArray(); // Convert IEnumerable from select to Array

これは、符号付き整数 [0, 1016] に対して完全に機能します。しかし、負の整数の場合、32 ビットの結果が得られます。負の整数を 11 ビット配列に変換する方法を知っていますか?

4

1 に答える 1

2

最初の 11 ビットのみを気にする場合は、マスクを適用するだけです。

string s = Convert.ToString(value & 2047, 2);

これにより、値が最大 11 ビットに制限されます。負の数の場合、すべての「未使用」ビットは 1 になります。

参考までに: 2047 はバイナリ 0000 ... 0000 0111 1111 1111、つまり最下位 11 ビットのマスクです。

于 2013-10-25T09:55:52.043 に答える