java语言实现8位二进制数的乘法。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java语言实现8位二进制数的乘法。相关的知识,希望对你有一定的参考价值。
例如输入01110011,10010101
输出的是01110000
即(73)•(95)=(70)
public static void main(String args[])
String a="";//定义从控制台输入的数A
String b="";//定义从控制台输入的数A
int cnum=0,dnum=0;//定义两个数转化为十进制的数
Scanner scanner =new Scanner(System.in);
System.out.println("请输入任意的一个八位的二进制数A");
a=scanner.nextLine();//接收A
if(a.length()!=8)//判断长度
System.out.println("A的输入长度不正确!");
else
boolean Atrue=true;//定义布尔量验证A是否是二进制数
for(int i=0;i<a.length();)//验证过程,并将其转化为10进制数
String substra=a.substring(i, ++i);
int c=1;
if(!substra.equals("0")&&!substra.equals("1"))//验证
Atrue=false;
break;
if(substra.equals("1"))//转化十进制
for(int j=0;j<a.length()-i;j++)
c=c*2;
cnum=cnum+c;
if(!Atrue)
System.out.println("A不是合法的二进制数!");
else
System.out.println("A输入正确");
System.out.println("A转化为10进制为"+cnum);
System.out.println("请输入任意的一个八位的二进制数B");
b=scanner.nextLine();
if(b.length()!=8)
System.out.println("B的输入长度不正确!");
else
boolean Btrue=true;
for(int i=0;i<b.length();)
String substrb=b.substring(i, ++i);
int d=1;
if(!substrb.equals("0")&&!substrb.equals("1"))
Btrue=false;
break;
if(substrb.equals("1"))
for(int j=0;j<b.length()-i;j++)
d=d*2;
dnum=dnum+d;
if(!Btrue)
System.out.println("B不是合法的二进制数!");
else//输入合法计算结果
System.out.println("B输入正确");
System.out.println("B转化为10进制为"+dnum);
System.out.println("A和B的乘积为"+dnum*cnum);
System.out.println("A和B的乘积转化为二进制"+Integer.toBinaryString(dnum*cnum));
参考技术A //计算结果跟楼主的不一样,不知道谁错了
//也可能是都错了,我这次写的是原码移位乘,莫非楼主的那个是补码的?
#include<stdio.h>
void shift(char result[],char b[])//右移
int i;
for(i=8;i>0;i--)
result[i]=result[i-1];
result[0]=0;
for(i=8;i>0;i--)
b[i]=b[i-1];
b[0] = result[8];
void solve(char a[],char b[])
char heigh[9];
char low[9];
int i,n=8;
for(i=0;i<9;i++)
heigh[i]=0;
for(i=0;i<8;i++)
low[i]=b[i];
while(n--)
char carrybit;//表进位
if(low[7])//如果此时各位为1
carrybit=0;
for(i=7;i>=0;i--)
char rj=heigh[i];
heigh[i]=heigh[i]^a[i]^carrybit;
carrybit=rj&a[i]|a[i]&carrybit|carrybit&rj;
shift(heigh,low);//右移
low[0]=heigh[8];
//舍掉高位,输出低位
for(i=0;i<8;i++)
printf("%d",low[i]);
printf("\n");
int main()
//char占一格字节,所以使用它
char a[9]=0;
char b[9]=0;
int i;
char c;
printf("Please inpute 2 binary number splited by ',' or blank\n");
for(i=0;i<8;i++)
c = getchar();
a[i]=c-'0';
c=getchar();
for(i=0;i<8;i++)
c = getchar();
b[i]=c-'0';
c=getchar();
solve(a,b);
return 0;
以上是关于java语言实现8位二进制数的乘法。的主要内容,如果未能解决你的问题,请参考以下文章