我有一個10位的二進制字符串,我必須在每次循環中按位循環移位。我很困惑,失去了。它可以輕鬆做到這一點背後的邏輯是什麼?如果它是一個十六進制數,我們可以通過num >> 1或num < < 1來完成,但是在應用按位移之前,應該將像「1010101010」這樣的字符串轉換爲十六進制。我必須循環使用10次按位移。如何按位移動java中的二進制字符串?
0
A
回答
1
一般來說,如果你想做數字操作,最好在數字上做。所以我會建議轉換你的字符串int(或其他)它實際上代表。然後,您可以進行位移,然後在需要時返回字符串。
如果你只是想做文本操作,那麼你可以使用一個StringBuffer並與角色一起玩。
StringBuffer s = new StringBuffer("1010101010");
for(int i=0; i<10; i++) {
char c = s.charAt(0);
s.append(c);
s.deleteCharAt(0);
}
String result = s.toString();
但是,這只是醜陋的,如果你只是試圖做數學
2
有在Integer類方法轉換到/從二進制字符串。
int i = Integer.parseInt("1010101010", 2);
String shiftedi = Integer.toBinaryString(i<<1);
編輯,上面是不是圓的,雖然,但你可以使用簡單的字符串操作:
String in = "1010101010";
String shifted1 = in.substring(1)+in.substring(0,1);
0
int bits = Integer.parseInt ("010101010", 2);
將改造成字符串一個int。 「在應用按位移之前轉換爲十六進制」是無稽之談 - 對不起。十六進制只是一種表示int的方式(例如)。你移動整型值,而不是表示。
1
假設你正在處理的String
包含零和1(又名「二進制串」),按位移是很容易的。
要「左移」,在每個「左移」的右端添加一個「0」字符。
爲了「向右移動」,事情有點複雜。假設你總是用二進制來處理一個「正數」,爲每個「右移」移除右端的一個字符。如果你希望做一個「符號擴展右移」,那麼你需要檢查字符串的長度,看看它是否是二進制補碼形式的二進制值的特定編碼的「最大長度」,那麼你需要刪除最右邊的字符,並且可選地在左邊添加「1」字符,前提是最左邊的字符已經是「1」。
現在,由於字符串長度不受限(而字和雙字是)並不清楚一個>>>
操作是否有意義爲二進制字符串,或者即使2的負數的補碼錶示對於二進制字符串是有意義的,除非對字符串中有效字符的數量施加「限制」。如果您想在兩個二進制字符串之間進行任何類型的二進制數學運算,那麼對於兩個二進制字符串(或者對較小字符串有促銷規則),該限制必須相同。
另一種選擇是隻將字符串轉換爲整數並對整數使用二進制運算。
相關問題
- 1. 字符串二進制到字符串8位數字在JAVA
- 2. 如何在java中獲取二進制字符串的所有位的位置?
- 3. 如何在二進制中應用按位右移運算符?
- 4. 二進制字符串到十六進制字符串java
- 5. 從java中的二進制文件讀取位字符串
- 6. 更改二進制字符串中第一位的值 - Java
- 7. Java |二進制字符串到字節
- 8. 的Java,Long.parse二進制字符串
- 9. 你如何在PHP中按位移動數據類型字符串的十六進制字符串?
- 10. 隨機移位加密的二進制字符串
- 11. 按位運算符和二進制字符串評估
- 12. 如何將字符串值轉換爲java中的二進制字符串
- 13. 如何將二進制文件中的64位Java解析爲PHP字符串?
- 14. 大型二進制字符串的Python按位操作
- 15. Java:字符串到BigInteger到二進制
- 16. 將二進制字符串移位爲規範形式
- 17. 二進制字符串的反轉位java
- 18. 二進制字符串文本字符串的Java代碼
- 19. 在C++中移位二進制數字
- 20. 將十六進制字符串轉換爲32位二進制字符串
- 21. Java六進制字符串到位集
- 22. 將字符串類型的二進制數字轉換爲java中的位
- 23. 字符串到二進制[]
- 24. Json_encode二進制字符串
- 25. 字符串爲二進制
- 26. 二進制字符串
- 27. 如何將二進制字符串轉換爲十進制字符串中的Java
- 28. 在Java中的任何字符串值到二進制轉換
- 29. 如何二進制字符串轉換爲10進制在Java中
- 30. 二進制字符串爲十六進制的Java
應用循環移位到長度爲10的二進制字符串10次是空操作... – 2012-04-24 22:01:40
這是一個作業問題嗎? (如果是的話,那很好,你應該把它標記爲一個) – JRaymond 2012-04-24 22:02:04
根本不是......我正在處理一些操作,並且我熱衷於編寫邏輯.. – volatNumbers 2012-04-24 22:03:39