2012-06-02 49 views
0

給定一個數字,我需要創建一個位數組。數字的valuewidth是已知的。對於正數,我不喜歡這樣的:在java中爲負數創建位數組

int[] createbitarr(int value, int width) 
{ 
    int _val = value; 
    int bitarr[]=new int[width]; 
    for (int i=0;value>0;i++) 
    { 
    bitarr[bitarr.length-i-1]=value%2; 
    value=value/2; 
    } 
    value=_val; 
    return bitarr; 
} 

這將工作僅當值爲正。如果值是負值,我怎樣才能創建一個位數組?

+0

你懂二進制補碼錶示?你爲什麼重新發明輪子而不是使用['ByteBuffer'](http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html)?你想解決什麼大問題? –

+0

@MattBall我明白2的補碼錶示。只有當值爲負時,我纔想得到2的補碼形式的位數組。問題是在不使用任何內置庫的情況下創建位陣列 –

+1

@user:爲什麼不能使用內置庫?這是功課嗎?你應該添加'家庭作業'標籤並在你的問題中解釋。 –

回答

0

好了,簡單方式會是這樣的

int x; // value 
for (int i = 0; i < 32; i++) 
    array[i] = (x & (1 << i)) != 0; 
+0

恕我直言,不是右手邊布爾? –

+1

@user - 是的,左邊也是......如果我正確理解路易斯在說什麼。 –