学习使用原码一位乘的思想计算串行求解乘法问题,并且程序需要满足下列要求:

1. 不能使用乘法运算符(*)以及除法运算符(/), 使用后判为零分;
2. 不能使用除scanf( )、printf( )、abs( )之外的库函数,使用后判为零分;
3. 允许使用加减法(+/-),模运算(%),各类位运算,逻辑运算符,循环语句,
数组,基本数据类型等。

输入格式:

输入在一行中给出2个绝对值不超过九位数(十进制)的整数A和B,
允许输入负数,允许正数前加“+”号。

输出格式:

输出A*B的值,如果乘积为+正,直接输出二进制结果;如果乘积为负,
输出负号及二进制结果。

输入样例:
在这里给出一组输入。例如:

34 -4
+35 5
0 0
-987654 1234567

输出样例:
在这里给出相应的输出。例如:

-10001000
10101111
0
-10001101111100101011011111000010100101010
  • 方法一:采用原码一位乘
#include<stdio.h>
#include<math.h>
int main(){int a[999];//用来存乘积的二进制数数 int x,y,x1,y1;int index,i;int p=0;//用来存Pi(i=0,1,2...)scanf("%d%d",&x,&y);x1=abs(x);y1=abs(y);if(x==0 || y==0){printf("0");return 0;}index=0;while(y1!=0){ if(y1%2==1){p+=x1;a[index]=p%2;p>>=1;}else{p+=0;a[index]=p%2;p>>=1;}index++;y1>>=1;}while(p!=0){if(p%2==1){a[index]=1;p>>=1;}else{a[index]=0;p>>=1;}index++;}if((x<0&&y>0) || (x>0&&y<0)){printf("-");}int f=0;//最前面的零不输出 for(i=index;i>=0;i--){if(a[i]==1){f=1;}if(f){printf("%d",a[i]);}}return 0;
}
  • 方法二:采用补码乘法(Booth算法)实现
未完待续。。。

二进制乘法的底层实现相关推荐

  1. 有符号二进制乘法及MATLAB有符号数16进制到2进制的转换问题

    目录 有符号数乘法 MATLAB有符号16进制转2进制 有符号数乘法 在服务器中搭建乘法器验证波形时,多比特二进制数手算比较麻烦,所以导入matlab计算正确的输出结果. 此时要注意乘法器的特性,举个 ...

  2. 二进制补码乘法除法_二进制乘法和除法

    二进制补码乘法除法 1)二进制乘法 (1) Binary Multiplication) Binary numbers can be multiplied using two methods, 二进制 ...

  3. 二进制乘法、除法的计算过程解读

    0. 问题描述 本文包括4位二进制乘法(4位乘4位)和8位二进制除法(8位除4位)的详细计算过程. 1.创作原因 计组实验中的涉及到此问题,当时上网查阅了许多博客和资料都没能理解这两者的计算过程,并且 ...

  4. 计算机基础知识之二进制乘法

    上一篇文章写到了二进制的加法,就是正数使用原码计算,负数使用补码计算. 那么二进制乘法是如何计算的呢? 我们都知道十进制的乘法,比如20.0*10=200.也就是小数点向右移动一位,如果是除以10的话 ...

  5. python如何写二进制乘法_Python二进制乘法。分裂与征服

    我需要理解为什么我的代码给出了错误的答案.任务是用分而治之的方法创建二进制乘法.我找到了一些描述这类问题的论文: wikibooks algorithmsUTSC paper (page 4) 这是我 ...

  6. (符号数)二进制乘法(从补码讲起)

    1.为什么补码可以用来转换加减法: 因为补码的符号位是参与运算的,而原码和反码的符号为只是标识位: e.g. (2-3)的补码 = (2)的补码+(-3)的补码=010 + 101 = 111 = - ...

  7. [c++]用C++字符串实现二进制乘法

    [c++]用C++字符串实现二进制乘法 说明 二进制乘法实现方法不难,模拟手动运算的思想,之所以选用字符串实现是因为字符串在移动方面性能显著,代码运用知识十分基础,希望可以给大家一个参考. 函数部分 ...

  8. 八位二进制乘法在复杂模型机上的实现

    这是计组的课设,实现的是原码定点一位乘法,代码的结构设计并不是很好,代码复用做的不是很到位,给大家提供下思路,仅供学习交流使用,实验要好好自己做啊,代码有一些小问题,大家直接抄是跑不通的. 利用以下指 ...

  9. python如何写二进制乘法_使用python写乘法口诀表

    代码如下: def chengfab(n): #定义一个chengfab函数,参数为n for x in range(1,n): #遍历x for y in range(1,n): #内层嵌套遍历y ...

最新文章

  1. 云计算与边缘计算协同的九大应用场景剖析
  2. 在 Asp.NET MVC 中使用 SignalR 实现推送功能
  3. Scala入门到精通——第八节 包和引入
  4. JavaScript学习(七十七)—统计字符串中出现次数最多的字符和每个字符出现的次数
  5. js reduce实现中间件_简述 laravel中间件 的原理
  6. python软件_Python软件的下载与安装
  7. 概念模型——分析模式学习笔记
  8. 【Oracle】to_char技巧
  9. 微信小程序实现轮播图
  10. java找不到符号解决办法
  11. 将内存ffff:0~ffff:b单元中的数据复制到0:200~0:20b单元中
  12. Cacti监控华为交换机不显示端口解决办法
  13. CH 6202 黑暗城堡
  14. 个人微信号二次开发sdk协议,微信个人号开发API接口
  15. Microsoft Orleans 之 入门指南
  16. java模拟京东登陆_模拟登陆京东并访问我的订单
  17. 小程序即将上线,现在就可以开发啦
  18. 国内下载android源码,Android国内源码下载——亲测成功-Go语言中文社区
  19. 快递100发送短信提醒
  20. iOS直接获取摄像头数据

热门文章

  1. 召回模型:DSSM双塔模型
  2. DCGAN生成二次元头像(Pytorch)
  3. 如何将潜伏者变成海报
  4. 20个为前端开发者准备的文档和指南
  5. Apache Camel - 2 - Camel小栗子(File)
  6. 根据日期查询当前万年历信息
  7. Jaccard 相似度
  8. 2022年驾驶员考试网约车驾驶员多选题专项训练及答案
  9. 不光是真无线耳机,更是Magic2的声音钥匙!荣耀FlyPods真香
  10. c语言装逼编程,教你用C语言写一个好玩的万年历,必备的装逼神器