Java二进制到整数

Java二进制到整数,java,Java,在JAVA中,我寻找了几种不同的方法将二进制转换为整数。 但我不明白为什么会这样 int res = 0; res += 1 << 1; int res=0; res+=1res+=1首先,让我们先弄清楚一些术语。您认为的整数实际上是中的一个数字,在Java的情况下,它是一个用0到9的十位数字(因此以10为基数)表示的数字 在本文中,我们只处理两个数字来表示所有的自然数。二进制数(以2为基数)和十进制数(以10为基数)都是整数 数字移位是用数字的基数进行乘法或除法 您观察到的位移位

在JAVA中,我寻找了几种不同的方法将二进制转换为整数。 但我不明白为什么会这样

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

res+=1
res+=1首先,让我们先弄清楚一些术语。您认为的整数实际上是中的一个数字,在Java的情况下,它是一个用0到9的十位数字(因此以10为基数)表示的数字

在本文中,我们只处理两个数字来表示所有的自然数。二进制数(以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),然后看二进制表示法。二进制数字
1
由于2的乘法,只会一个接一个地向左移动。

计算机上的所有东西都是二进制的。当您将其打印到System.out时,它会将其转换为base 10。因为Java中没有二进制原语,所以没有转换
res
是一个
int
int
已经是一个32位的有符号值,即它已经是二进制的,您不能更改它。任何认为它不是二进制的想法都只是为了让你的生活更轻松。