功能描述:对一个二进制数的每位进行0和1反转,求翻转后的二进制所对应的十进制
输入:1010
输出:5
代码如下:
package 华为机试题;
/**
* @author Hutongling
*
* @time:2017年4月8日 下午7:28:56
*/
public class 反转二进制数 {
static int inverseBinary(String string) {
if (string == null || string.length() == 0)
return -1;
String result = "";
for (int i = 0; i < string.length(); i++) {
if (string.charAt(i) == '0' || string.charAt(i) == '1') {
if (string.charAt(i) == '0')
result += '1';
else if (string.charAt(i) == '1')
result += '0';
}
else return -1;
}
int sum = 0;
for (int i = 0; i < result.length(); i++)
sum = sum * 2 + result.charAt(i) - '0';
return sum;
}
public static void main(String[] args) {
String s="0010";
if(inverseBinary(s)==-1)
System.out.println("请输入正确的二进制数");
else
System.out.println(inverseBinary(s));
}
}
代码结果:
13