在這種情況下,我需要在兩個相同大小的部分10
和01
中拆分數字9(1001
)的位。Java使用位移動將長整型的位分成兩部分
我的第一個想法是剛剛轉向,但對於正確的數字我沒有得到預期的結果,我懷疑這是由於標誌(在Java中沒有:(簽名)。
我當前的代碼是以下:
long num=9;
System.out.println(Long.toBinaryString(num));
long num1=num>>2;
System.out.println(Long.toBinaryString(num1));
long num2=num<<2;
System.out.println(Long.toBinaryString(num2));
輸出:
1001
10
100100
任何變通方法
如果它是一個奇數位,你會怎麼做?讓我們說5 – agim 2014-10-16 17:52:07
所以......你想計算一下位數,然後根據它進行分配? – hyde 2014-10-16 17:52:15
這是正確的輸出:'9 >> 2'是'2'(二進制'10'),'9 << 2'是'36'(二進制'100100'))。 – rgettman 2014-10-16 17:53:40