我想知道哪一個是在java中使用二進制數字的最佳方法。 我需要一種方法來創建一個二進制數字的數組,並與他們做一些計算。例如,我想X或二進制數的值或乘法矩陣。在java中使用二進制數字
問題解決: 非常感謝所有的信息。
我覺得我的情況,我將使用由@Jarrod羅伯遜
我想知道哪一個是在java中使用二進制數字的最佳方法。 我需要一種方法來創建一個二進制數字的數組,並與他們做一些計算。例如,我想X或二進制數的值或乘法矩陣。在java中使用二進制數字
問題解決: 非常感謝所有的信息。
我覺得我的情況,我將使用由@Jarrod羅伯遜
提到的BitSet我從來沒有見過一個使用任何東西,但二進制數的計算機。
Java中的XOR運算符是^
。例如,5^3 = 6。對於大多數號碼到字符串轉換的默認基數是10,但也有幾個方法,其允許用戶指定另一基,如2:
System.out.println(Integer.toString(5^3, 2));
如果使用Java 7,,您可以在源代碼中使用二進制文字(除了以前支持的十進制,十六進制和八進制格式)。
在Java版本7,你可以簡單地用0b
或0B
聲明整數和前面的你的數字使用二進制數:
int x=0b101;
int y=0b110;
int z=x+y;
System.out.println(x + "+" + y + "=" + z);
//5+6=11
/*
* If you want to output in binary format, use Integer.toBinaryString()
*/
System.out.println(Integer.toBinaryString(x) + "+" + Integer.toBinaryString(y)
+ "=" + Integer.toBinaryString(z));
//101+110=1011
您應該提到,這僅適用於Java 7:http://download.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html –
也適用於Java 8。 –
您可以將它們保存爲byte
陣列,然後單獨訪問位。然後對它們進行異或運算,只需對字節進行異或運算(這是一個按位操作)。
當然,它不一定是一個字節數組(可能是一個int
類型的數組或任何你想要的),因爲一切都以二進制存儲在最後。
你可能要找的是BitSet
類。
該類實現了根據需要增長的位向量。該位組的每個 組件都有一個布爾值。 BitSet的位是由非負整數索引的 。個別索引位可以是 檢查,設置或清除。一個BitSet可用於通過邏輯AND,邏輯與或, 和邏輯異或操作來修改另一個BitSet的內容 。
默認情況下,該集合中的所有位最初都具有值false。
每個比特集合都有一個當前大小,它是比特集合當前使用的空間的比特數目 。請注意,該大小與位設置的實現相關,所以它可能隨實現而改變。位集合的長度與位集合的邏輯長度有關,並且與實現無關地定義爲 。
除非另有說明,否則將null參數傳遞給BitSet中的任何方法 將導致NullPointerException。
這個號碼本身和 之間的區別是它在語言中的表示。例如,「0xD」(基數16),「13」(基數10),「015」(基數8)和「b1101」(基數2)是涉及相同數字的四個不同表示。也就是說,可以使用Java語言中的「int」原語數據類型來表示任何二進制數(以及任何基數中的任意數字),但只有在Java 7中,您才能夠使用binary literal作爲如果我正確理解了你的問題,你以前能夠使用八進制(0)和十六進制(0x)文字來表示這些數字。
在Java 7中二進制支持比較好。
請參閱此鏈接:http://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html
請選擇正確的答案(加上綠色的勾號) – kritzikratzi