JAVA 实现算法
发布网友
发布时间:2022-04-22 23:07
我来回答
共5个回答
热心网友
时间:2023-09-26 17:16
稍微写了下,供你参考,见笑了。
public int getIntegerComplement(int N){
int inversion=0;
String binaryString=Integer.toBinaryString(N);
char[] charArray=binaryString.toCharArray();
StringBuffer sb=new StringBuffer();
for(int i=0;i<charArray.length;i++){
switch (charArray[i]) {
case '0':
sb.append("1");
break;
case '1':
sb.append("0");
break;
default:
System.out.println("error happens");
break;
}
}
String stringAfterInversion=sb.toString();
System.out.println("stringAfterInversion:"+stringAfterInversion);
inversion=Integer.parseInt(stringAfterInversion, 2);
System.out.println("inversion value is:"+inversion);
return inversion;
}
热心网友
时间:2023-09-26 17:16
Integer.toBinaryString(i);
将十进制的数转化为二进制 得到一个string类型
然后在遍历这个数组 将0变成1 1变成0即可
Integer.parseInt(str, 10)可以把二进制转化为十进制
热心网友
时间:2023-09-26 17:17
编码是不能用字符串的,大大大降低速度
public class Test{
static public int getIntegerComplement(int n){
return ~n&((1<<(32-Integer.numberOfLeadingZeros(n)))-1);
}
public static void main(String[] args){
int a[]={1,5,50,256,65536};
for(int i:a){
int r=getIntegerComplement(i);
System.out.println(i+" "+Integer.toBinaryString(i)+
" => "+r+" "+Integer.toBinaryString(r));
}
}
}
========
1 1 => 0 0
5 101 => 2 10
50 110010 => 13 1101
256 100000000 => 255 11111111
65536 10000000000000000 => 65535 1111111111111111
热心网友
时间:2023-09-26 17:18
public class Convert {
public static void main(String[] args) {
for (int N = 0; N <= 10; N++) {
int value = getIntegerComplement(N);
System.out.print(N + "(" + toBinaryString(N) + ") -> ");
System.out.println(value + "(" + toBinaryString(value) + ")");
}
}
public static int getIntegerComplement(int n) {
int len = toBinaryString(n).length();
return Integer.parseInt(toBinaryString(~n).substring(32 - len), 2);
}
public static String toBinaryString(int n) {
return Integer.toBinaryString(n);
}
}
热心网友
时间:2023-09-26 17:18
推推,有人答了