2013-01-04 34 views
1

可能重複:
Converting decimal to binary in Java如何以二進制形式顯示按位運算的結果?

我發現這個代碼,作爲輸入的數x,陣列p和另一個號碼pmax指示數組的大小p

public static int permute(int x, int p[], int pmax) { 
    int y = 0; 

    for (int i = 0; i < p.length; ++i) { 
     y <<= 1; 
     y |= (x >> (pmax - p[i])) & 1; 
    } 

    return y; 
} 

這段代碼應該是p根據陣列在例如定義p

這樣的規則ermutating存儲在數x 的第一字節的比特如果x第一PMAX位是101和陣列P如下: p={2 1 3} 那麼這個函數(y)的結果將等於011

問題

我從來沒有WO用位運算符排序,我希望看到上面代碼的所有中間結果。例如,y<<=1做了什麼以及爲什麼使用它。要做到這一點,我需要以二進制形式顯示y變量,否則我只是得到一些隨機小數,這對我無法理解任何東西。

那麼如何在每次按位運算後顯示二進制格式的結果呢?

如果這不是一個很好的方法來確切地知道這段代碼做什麼,你會建議什麼方法?

回答

5

Integer.toBinaryString(int x)會爲你做這個。

+0

我寧願把這個問題作爲一個簡單的重複,而不是授予西方最快的槍和他的代表每個10 XP。 –

+1

@JanDvorak鏈接副本與編寫一個手工方法相關,該方法將數字轉換爲生成二進制字符串。我甚至投了這個問題來封閉,但這並不意味着我不能在這段時間內花費10秒的時間來回答。如果它將被關閉,那麼它將會發生。 – Jack