首页  > 教育解读  > java二进制如何算

java二进制如何算

2025-04-30 23:00:59
王老师
王老师已认证

王老师为您分享以下优质知识

在Java中,二进制计算主要通过位运算实现。以下是基础知识和示例:

一、二进制转换方法

十进制转二进制

使用`Integer`类的方法:

```java

int num = 255;

String binaryStr = Integer.toBinaryString(num);

System.out.println(binaryStr); // 输出: 11111111

```

其他进制转换方法:

- 八进制:`Integer.toOctalString(num)`

- 十六进制:`Integer.toHexString(num)`

其他进制转十进制

使用`Integer.valueOf(String s, int radix)`方法:

```java

String binaryStr = "0101";

int decimalNum = Integer.valueOf(binaryStr, 2);

System.out.println(decimalNum); // 输出: 5

```

二、基本位运算

按位与(&)

仅当两个对应位都为1时结果为1,否则为0。 ```java

int a = 51 (00110011);

int b = 5 (00000101);

int result = a & b; // 00000001,即1

```

特殊用法:与0运算可清零(如取低4位)。

按位或(|)

只要两个对应位中有一个为1,结果为1。 ```java

int a = 51 (00110011);

int b = 9 (00001001);

int result = a | b; // 00111011,即53

```

按位异或(^)

仅当两个对应位不同时结果为1。 ```java

int a = 51 (00110011);

int b = 9 (00001001);

int result = a ^ b; // 00111010,即52

```

按位取反(~)

对每个二进制位取反(0变1,1变0)。 ```java

int num = 51 (00110011);

int result = ~num; // -52,补码表示

```

三、二进制运算示例

加法(不使用`+`运算符)

通过按位异或和按位与实现:

```java

public static int addBinary(String a, String b) {

int carry = 0;

StringBuilder result = new StringBuilder();

int i = a.length() - 1;

int j = b.length() - 1;

while (i >

= 0 || j >

= 0 || carry != 0) {

int bitA = i >

= 0 ? a.charAt(i) - '0' : 0;

int bitB = j >

= 0 ? b.charAt(j) - '0' : 0;

int sum = bitA ^ bitB ^ carry;

carry = (bitA & bitB) | (bitA & carry) | (bitB & carry);

result.insert(0, sum);

i--;

j--;

}

return Integer.parseInt(result.toString());

}

```

四、注意事项

负数表示:

Java使用补码表示负数,需注意运算结果的正负判断。

数据类型限制:`int`为32位,超出范围需使用`long`类型。

通过以上方法,可灵活实现二进制转换与运算。