gpt4 book ai didi

java - 从整数形成位模式

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:36 26 4
gpt4 key购买 nike

我需要帮助来设计 java 代码,以按以下方式为任何给定整数生成位数组:

23 应该产生 1101011 的输出(最小长度数组)解释:

位置为 1 -2 4 -8 16 -32 ....

所以 1101011 可以计算为:

1*1 + 1*-2 + 0*4+ 1*-8 + 0*16 +1*-32 + 1*64 = 23

最佳答案

这就是所谓的negabinary 数字表示法(由 Vittorio Grünwald 于 1885 年首先描述)。它们可以以与通常的二进制表示非常相似的方式进行编码,只需使用 -2 而不是 2 作为基数(Java 代码受 https://en.wikipedia.org/wiki/Negative_base 上的 C# 代码启发):

class EncodeNegaBinary {

public static void main(String[] args) {

int n=0,input=0;
String result="";
final String[] BITS = { "0","1" };

if (args.length != 1) {
System.err.println("Please enter an integer to be converted");
return;
} else {
input = n = Integer.parseInt(args[0]);
}

while (n != 0) {
int r = n%-2;
n /= -2;
if (r == -1) {
r=1;
n++;
}
result = BITS[r] + result;
}

System.out.printf( "%d -> %s\n", input, result);

}
}

关于java - 从整数形成位模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55548348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com