直接上代码吧
public class TestStream1023 {
@Test
public void testPareCom() {
String res = testPareCom(12, 5, 8);
System.out.println("逻辑&计算的结果二进制:["+res+"]");
System.out.println("二级制转十进制数字:"+Integer.valueOf(res,2));
}
private String testPareCom(int a, int b, int size) {
String strA = parseStr(Integer.toBinaryString(a), size);
String strB = parseStr(Integer.toBinaryString(b), size);
System.out.println("[" + a + "]的二进制:[" + strA + "]");
System.out.println("[" + b + "]的二进制:[" + strA + "]");
char[] charA = strA.toCharArray();
char[] charB = strB.toCharArray();
char[] charC = new char[size];
for (int i = 0; i < size; i++) {
if (charA[i] == '1' && charB[i] == '1') {
charC[i] = '1';
} else {
charC[i] = '0';
}
}
System.out.println(Arrays.toString(charC));
return String.valueOf(charC);
}
private String parseStr(String strNum, int num) {
// 0 代表前面补充0
// 4 代表长度为4
// d 代表参数为正数型
//向前补0
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("%0").append(num).append("d");
String str = String.format(stringBuffer.toString(), Integer.parseInt(strNum));
if (str.length() != num) {
//向后补0
StringBuffer stringBuffer1 = new StringBuffer(str);
int jq = num - str.length();
for (int i = 0; i < jq; i++) {
stringBuffer1.append("0");
}
return stringBuffer1.toString();
}
return str;
}
}
计算结果