在Java中计算二进制数可以通过多种方法实现,具体取决于需求(如转换进制、位运算等)。以下是主要方法及示例:
一、进制转换方法
- 使用`Integer.toBinaryString(int n)`方法:
```java
int num = 255;
String binaryStr = Integer.toBinaryString(num);
System.out.println(binaryStr); // 输出: 11111111
```
- 手动实现(适用于大数或学习目的):通过除2取余法或位移操作:
```java
public void binaryToDecimal(int n) {
StringBuilder sb = new StringBuilder();
while (n > 0) {
sb.insert(0, n % 2);
n /= 2;
}
System.out.println(sb.toString());
}
```
二进制转十进制
- 使用`Integer.parseInt(String s, int radix)`方法:
```java
String binaryStr = "1011";
int decimalNum = Integer.parseInt(binaryStr, 2);
System.out.println(decimalNum); // 输出: 11
```
- 手动实现:按权展开法:
```java
public void binaryToDecimalManual(int n) {
int sum = 0;
for (int i = 0; i < 32; i++) {
sum += (n & (1 << i)) << (31 - i);
}
System.out.println(sum);
}
```
二进制转八进制/十六进制
- 转八进制:每3位二进制对应1位八进制,不足补零:
```java
String binaryStr = "1100111";
String octalStr = Integer.toOctalString(Integer.parseInt(binaryStr, 2));
System.out.println(octalStr); // 输出: 163
```
- 转十六进制:每4位二进制对应1位十六进制,不足补零:
```java
String binaryStr = "11110011";
String hexStr = Integer.toHexString(Integer.parseInt(binaryStr, 2));
System.out.println(hexStr); // 输出: FF3
```
二、二进制运算方法
按位与(&)
- 逻辑与运算,全1为1,否则为0:
```java
int a = 51 (00110011);
int b = 5 (00000101);
int result = a & b; // 1
```
- 特殊用法:与0相与可清零(如取低4位):
```java
int mask = 00001111;
int value = 10101110 & mask; // 00001110
```
按位或(|)
- 逻辑或运算,有1为1:
```java
int a = 51 (00110011);
int b = 9 (00001001);
int result = a | b; // 59 (00111011)
```
- 特殊用法:与0相或保留原值,与1相或置1:
```java
int value = 10100000 | 00001111; // 10101111
```
异或(^)
- 逻辑异或运算,相同为0,不同为1:
```java
int a = 51 (00110011);
int b = 9 (00001001);
int result = a ^ b; // 44 (00101010)
```
- 交换操作:
```java
int x = 5;
int y = 3;
x = x ^ y;
y = x ^ y;
x = x ^ y; // 交换结果
```
三、其他实用方法
二进制字符串拼接:
```java
String binaryStr = "1010";