gpt4 book ai didi

java - 输出多于 8 位的二进制数

转载 作者:太空宇宙 更新时间:2023-11-04 12:42:36 27 4
gpt4 key购买 nike

尝试学习 Java(空闲时间)并坚持为什么输出的变量比我想要的多。我希望它只打印出 8 位。我尝试输入 &255,但没有采取任何措施来删除尾随数字。

示例:总和为:0000111110

Scanner sn = new Scanner(System.in); 
int arr[] = new int[10];
int i,m,n,sum,carry=0;

System.out.print("Enter 8-bit signed binary number:");
int n1 = sn.nextInt();

System.out.print("Enter another binary number:");
int n2 = sn.nextInt();

for(i=arr.length-1;i>=0;i--){
m=n1%10;
n=n2%10;
n1=n1/10;
n2=n2/10;
sum=m+n+carry;

if(sum==1)
{
arr[i]=1;
carry=0;
}

else if(sum==2)
{
arr[i]=0;
carry=1;
}

else if(sum==3)
{
arr[i]=1;
carry=1;
}

else{

arr[i]=m+n+carry&255;
}

}
System.out.printf("The sum is:");
for(i=0;i<arr.length;i++) {
System.out.print(arr[i]);
}
System.out.println("");
}

最佳答案

得到前导零的原因是因为您强制程序计算 10 位并打印 10 位(int arr[] = new int[10])。为了避免计算/打印额外的位,您可以更改 for 循环的条件,并跟踪总和有多少位:

    Scanner sn = new Scanner(System.in); 
int arr[] = new int[10];
int m,n,sum,carry = 0, nBits = 0; //Declare nBits, number of bits the final sum has

System.out.print("Enter 8-bit signed binary number:");
int n1 = sn.nextInt();

System.out.print("Enter another binary number:");
int n2 = sn.nextInt();

for(int i = arr.length-1 ; (n1|n2|carry) != 0 ; i--, nBits++) {
m=n1%10;
n=n2%10;
n1=n1/10;
n2=n2/10;
sum=m+n+carry;

if(sum==1) {
arr[i]=1;
carry=0;
}

else if(sum==2) {
arr[i]=0;
carry=1;
}

else if(sum==3) {
arr[i]=1;
carry=1;
}

else {
arr[i]=m+n+carry&255;
}

}
System.out.printf("The sum is:");
for(int i = arr.length-nBits ; i < arr.length ; i++) {
System.out.print(arr[i]);
}
System.out.println();
}

条件改为(n1|n2|carry) != 0,换句话说,当三个变量中的任何一个不等于0时,在每个周期迭代nBits

关于java - 输出多于 8 位的二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685223/

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