java语言实现8位二进制数的乘法。

例如输入01110011,10010101输出的是01110000即(73)•(95)=(70)... 例如输入01110011,10010101
输出的是01110000
即(73)•(95)=(70)
展开
 我来答
zjhcjiangyc
推荐于2016-07-03 · 超过33用户采纳过TA的回答
知道答主
回答量:165
采纳率:0%
帮助的人:106万
展开全部
//不知道这是不是你要的结果
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));
}
}
}
}
}
水牧兮
2011-11-04 · TA获得超过385个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:89.3万
展开全部
//计算结果跟楼主的不一样,不知道谁错了
//也可能是都错了,我这次写的是原码移位乘,莫非楼主的那个是补码的?
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式