BitArray bits = new BitArray(new byte[] { 7 });
foreach (bool bit in bits)
{
Console.WriteLine(bit ? 1 : 0);
}
給我下面的輸出:
11100000
它不應該是周圍的其他方式?像這樣:
00000111
我知道有一些小的大端,儘管這些術語只是指字節的位置。據我所知,它們不影響位。
BitArray bits = new BitArray(new byte[] { 7 });
foreach (bool bit in bits)
{
Console.WriteLine(bit ? 1 : 0);
}
給我下面的輸出:
11100000
它不應該是周圍的其他方式?像這樣:
00000111
我知道有一些小的大端,儘管這些術語只是指字節的位置。據我所知,它們不影響位。
的documentation for BitArray狀態:
陣列中的第一個字節表示位0至7,第二 字節表示位8至15,等等。最低有效 位每個字節的表示最低索引值: 「字節[0] & 1」 表示位0, 「字節[0] & 2」 表示位1, 「字節[0] & 4」 表示位2,等等。
索引位時,約定是從最低位開始,這是以二進制表示法寫的右側。但是,枚舉數組時,您從索引0開始,因此它們從左到右而不是從右到左打印。這就是爲什麼它看起來倒退。
例如,字01011010 00101101(90 45)將被收錄爲:
0 1 0 1 1 0 1 0 - 0 0 1 0 1 1 0 1
----------------------- -----------------------
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
而且因爲你通過它最低顯著首先你將會把它傳遞給構造爲new byte[] { 45, 90 }
。當打印出來時,它將以索引順序顯示爲:1011010001011010
,這與原始二進制表示法相反。
該文檔沒有明確說明它,但我想迭代器從LSB迭代到MSB。對我來說聽起來很合理(親自!),除非你打印出這些位。我看了一下BitArray.GetEnumerator Method。
不,它是一個位數組,不是一個以位表示的數值。
它就像任何常規數組一樣添加了一些用於位操作的方法。就像你有一個int數組一樣。你不會期望它是在相反的順序,它只是按位置。
例如:
號碼(以字節)轉換爲BitArray
會出來,如:
2 = 01000000
5 = 10100000
8 = 00010000
等
它只是存儲的值的不相對的位置,但你會從二進制數值除外。
這裏是描述正在使用的構造的鏈接:
http://msdn.microsoft.com/en-us/library/b3d1dwck.aspx
的關鍵點是:
在第一值數組元素的數字表示位0至 31,數組中的第二個數字代表位32到63,以及 等。 每個整數的最低有效位代表最低 索引值: 「值[0] & 1」 表示第0位, 「值[0] & 2」 表示位1 「值[0] & 4」 表示位2,等等。