我看了幾種不同的方式將二進制轉換爲JAVA中的整數。 但我想不通爲什麼這個工程?Java二進制到整數
int res = 0;
res += 1 << 1;
res結果是2,我知道它向左移動了1位,並且變成了二進制。但我很混淆它如何從二進制轉換爲整數,我想知道機制。
感謝
我看了幾種不同的方式將二進制轉換爲JAVA中的整數。 但我想不通爲什麼這個工程?Java二進制到整數
int res = 0;
res += 1 << 1;
res結果是2,我知道它向左移動了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
只是逐個向左移動。
res+= 1<<1;
可以爲res = res + 1<<1;
如果你把1<<1
寫這意味着1
當你做一個右移成爲00000000 00000000 00000000 00000010
這是0x00000002
是2
十進制值表示爲0x00000001 = 00000000 00000000 00000000 00000001
計算機上的所有內容都是二進制文件。當您將它打印到System.out時,它會將其轉換爲基數爲10. – ControlAltDel 2014-09-24 18:43:19
由於Java中沒有二進制基元,因此沒有轉換; 'res'是一個'int'。 – azurefrog 2014-09-24 18:43:22
一個'int'已經是一個32位有符號值,即它已經是二進制的,你不能改變它。任何除二進制以外的概念都只是爲了讓您的生活更輕鬆。 – 2014-09-24 19:10:55