2016-03-15 42 views
-4
public class UpCase { 
    public static void main(String[] args) { 
     int t; 
     byte val; 
     val = 123; 
     for (t = 128; t > 0; t = t/2) { 
      System.out.println(t); 
      if ((val & t) != 0) System.out.println(" 1"); 
      else System.out.println(" 0"); 
     } 
    } 
} 

特別是,我不確定我們爲什麼使用val=123?我明白這個程序會打印出二進制文件123,但爲什麼會出現這種情況?這個怎麼用?不過,我的確瞭解&運營商的原理以及您如何打開和關閉位,但我不確定它在這個特定示例中的工作原理?有人可以向我解釋這個按位節目嗎?

+0

以這些鏈接開始。 http://www.wikihow.com/Convert-from-Binary-to-Decimal和http://www.wikihow.com/Convert-from-Decimal-to-Binary –

+1

理解這段代碼的最好方法是步驟通過它你的IDE調試器一次一行。提示:它所做的只是在二進制中顯示'val'中的任何值。 –

回答

2

該程序將打印出二進制數字的數字在val從MSB到LSB通過比較它的每個2的功率:

123 : 01111011 & 
128 : 10000000 = 
     00000000 

     00000000 != 0 => false, print 0 

123 : 01111011 & 
64 : 01000000 = 
     01000000 

     01000000 != 0 => true, print 1 

123 : 01111011 & 
32 : 00100000 = 
     00100000 

     00100000 != 0 => true, print 1 

// repeat for 2^4-2^1... 

123 : 01111011 & 
    1 : 00000001 = 
     00000001 

     00000001 != 0 => true, print 1 
0

很簡單:

它如果該值(123在這種情況下),使用位運算符&只檢查。結果是1或0,這個過程重複以下值0.5t等,直到t = 0,導致該值爲二進制字符串123.

相關問題