gpt4 book ai didi

java - 二进制除法java实现

转载 作者:行者123 更新时间:2023-11-29 05:52:47 26 4
gpt4 key购买 nike

这可能是一个奇怪的问题,但我还没有在网上浏览任何二进制除法 java 实现。我会将它用于 CRC16 编码,因此转换为十进制不是解决方案。我理解纸上的方法,但我是初学者,因为它非常重要,所以我不想弄错。我唯一发现的是 code.google.com 上使用二进制除法的 CRC.java,但即使我只使用它的除法部分(删除其他部分),我也没有得到理想的值。

任何人都可以向我展示它的 Java 实现吗?我将不胜感激!提前致谢

我找到的代码:

公共(public)类 CRC { 私有(private)字符串数据,除数;

public CRC(String d, String di) {
this.data = d;
this.divisor = di;
}
public String getRemainder(String data, String divisor) {
int x = 1, z = divisor.length(), j = 0, i;
String data2 = "", strOfZeros = "";
int y = divisor.length() - 1;
/* This is to get correct amount of zero's onto the end of the data */
while (y > 0) {
data += "0";
y--;
}
// Main part of method, this is the long division of Binary numbers.
needToExit: for (i = x, j = 1; i < z && z <= data.length(); i++, j++) {
if (z == data.length() && data2.charAt(0) == '1') {
strOfZeros = "";
for (i = 1; i < divisor.length(); i++) {
if (data2.charAt(i) == divisor.charAt(i))
strOfZeros += '0';
else
strOfZeros += '1';
}
data2 = strOfZeros;
break needToExit;
}

if (data.charAt(i) == divisor.charAt(j))
data2 += "0";
else
data2 += "1";

if (i == divisor.length() - 1) {
data2 += data.charAt(z);
x++;
z++;
// i = x;
j = 0;

// when first bit is a 0
while (data2.charAt(0) != '1' && i == divisor.length() - 1) {
for (i = 1; i < divisor.length(); i++) {
if (data2.charAt(i) == '0')
strOfZeros += "0";
else
strOfZeros += "1";
}
strOfZeros += data.charAt(z);
data2 = strOfZeros;
strOfZeros = "";
x++;
z++;
i = x;
}
}

}
return data2;
}
public String getDataPlusCRC(String data){
String str = data.concat(getRemainder(this.data, this.divisor));
return str;
}

当我尝试除以数字时,getRemainder() 方法给出了错误的结果。而这部分不是必需的,因为它需要CRC。

while (y > 0) {
data += "0";
y--;
}

最佳答案

BigInteger 可以进行以 2 为底的除法;

    BigInteger divisor = new BigInteger("10", 2);
BigInteger dividend = new BigInteger("100", 2);
BigInteger result = dividend.divide(divisor);

System.out.println(result.toString(2));

关于java - 二进制除法java实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13286763/

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