2014-09-24 76 views
-1

我看了幾種不同的方式將二進制轉換爲JAVA中的整數。 但我想不通爲什麼這個工程?Java二進制到整數

int res = 0; 
res += 1 << 1; 

res結果是2,我知道它向左移動了1位,並且變成了二進制。但我很混淆它如何從二進制轉換爲整數,我想知道機制。

感謝

+2

計算機上的所有內容都是二進制文件。當您將它打印到System.out時,它會將其轉換爲基數爲10. – ControlAltDel 2014-09-24 18:43:19

+1

由於Java中沒有二進制基元,因此沒有轉換; 'res'是一個'int'。 – azurefrog 2014-09-24 18:43:22

+1

一個'int'已經是一個32位有符號值,即它已經是二進制的,你不能改變它。任何除二進制以外的概念都只是爲了讓您的生活更輕鬆。 – 2014-09-24 19:10:55

回答

1

首先,讓我們先澄清一些術語。你認爲是一個整數實際上是base 10 notation中的一個數字,在Java的情況下是natural number,它使用從0到9(因此爲10)的十個數字表示。

binary notation我們只處理兩位數字代替所有自然數。二進制(基數2)和十進制數(基數10)都是整數。

數字移位是由數

你觀察可以是位移效果的基礎乘法或除法使用基10號你已經熟悉容易解釋。想象一下,你有一個預先填滿了0 s的方形區域。在每個字段中,您可以寫入從0到9的數字,並假設這些字段被稱爲「」。你寫的數量7成條狀排列的右手邊:

0|0|0|0|0|7 

試想一下,整個條代表整數7現在。什麼位移有效的做法是將這些數字移動到左側或右側,同時用0 s填充以前佔用的位置。試想一下,我們正在轉變我們的7由一個點左:

0|0|0|0|7|0 

通過數向左移動,我們實際上通過10(記住執行快速乘法,即我們的數字系統的基礎我們在這裏處理)。

當您將該號碼向右移一位時,您將執行除號10

位數據移位乘法或除法由2

這同樣適用於二進制數,爲在計算機的數字占主導地位的存儲格式。二進制數字只包含兩位數,1和0。

只需快速瀏覽一下下表在爲獲得更好的理解二進制數:

+-------------------+ 
| Decimal | Binary | 
+---------+---------+ 
| 0000001 | 0000001 | 
| 0000002 | 0000010 | 
| 0000003 | 0000011 | 
| 0000004 | 0000100 | 
| 0000005 | 0000101 | 
| 0000006 | 0000110 | 
| 0000007 | 0000111 | 
| ...  | ...  | 
+---------+---------+ 

我們通過2執行乘法時,我們在條向左移動的號碼,我們執行部門當我們將數字移到右邊時爲2。只需查看錶格,然後查找十進制數字1.將其乘以2並查看二進制表示。再乘以2(十進制4)並查看二進制符號。由於乘以2,二進制數字1只是逐個向左移動。

0

res+= 1<<1;可以爲res = res + 1<<1; 如果你把1<<1寫這意味着1當你做一個右移成爲00000000 00000000 00000000 00000010

這是0x000000022十進制值表示爲0x00000001 = 00000000 00000000 00000000 00000001