二进制乘法的底层实现
学习使用原码一位乘的思想计算串行求解乘法问题,并且程序需要满足下列要求:
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算法)实现
未完待续。。。
二进制乘法的底层实现相关推荐
- 有符号二进制乘法及MATLAB有符号数16进制到2进制的转换问题
目录 有符号数乘法 MATLAB有符号16进制转2进制 有符号数乘法 在服务器中搭建乘法器验证波形时,多比特二进制数手算比较麻烦,所以导入matlab计算正确的输出结果. 此时要注意乘法器的特性,举个 ...
- 二进制补码乘法除法_二进制乘法和除法
二进制补码乘法除法 1)二进制乘法 (1) Binary Multiplication) Binary numbers can be multiplied using two methods, 二进制 ...
- 二进制乘法、除法的计算过程解读
0. 问题描述 本文包括4位二进制乘法(4位乘4位)和8位二进制除法(8位除4位)的详细计算过程. 1.创作原因 计组实验中的涉及到此问题,当时上网查阅了许多博客和资料都没能理解这两者的计算过程,并且 ...
- 计算机基础知识之二进制乘法
上一篇文章写到了二进制的加法,就是正数使用原码计算,负数使用补码计算. 那么二进制乘法是如何计算的呢? 我们都知道十进制的乘法,比如20.0*10=200.也就是小数点向右移动一位,如果是除以10的话 ...
- python如何写二进制乘法_Python二进制乘法。分裂与征服
我需要理解为什么我的代码给出了错误的答案.任务是用分而治之的方法创建二进制乘法.我找到了一些描述这类问题的论文: wikibooks algorithmsUTSC paper (page 4) 这是我 ...
- (符号数)二进制乘法(从补码讲起)
1.为什么补码可以用来转换加减法: 因为补码的符号位是参与运算的,而原码和反码的符号为只是标识位: e.g. (2-3)的补码 = (2)的补码+(-3)的补码=010 + 101 = 111 = - ...
- [c++]用C++字符串实现二进制乘法
[c++]用C++字符串实现二进制乘法 说明 二进制乘法实现方法不难,模拟手动运算的思想,之所以选用字符串实现是因为字符串在移动方面性能显著,代码运用知识十分基础,希望可以给大家一个参考. 函数部分 ...
- 八位二进制乘法在复杂模型机上的实现
这是计组的课设,实现的是原码定点一位乘法,代码的结构设计并不是很好,代码复用做的不是很到位,给大家提供下思路,仅供学习交流使用,实验要好好自己做啊,代码有一些小问题,大家直接抄是跑不通的. 利用以下指 ...
- python如何写二进制乘法_使用python写乘法口诀表
代码如下: def chengfab(n): #定义一个chengfab函数,参数为n for x in range(1,n): #遍历x for y in range(1,n): #内层嵌套遍历y ...
最新文章
- 云计算与边缘计算协同的九大应用场景剖析
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能
- Scala入门到精通——第八节 包和引入
- JavaScript学习(七十七)—统计字符串中出现次数最多的字符和每个字符出现的次数
- js reduce实现中间件_简述 laravel中间件 的原理
- python软件_Python软件的下载与安装
- 概念模型——分析模式学习笔记
- 【Oracle】to_char技巧
- 微信小程序实现轮播图
- java找不到符号解决办法
- 将内存ffff:0~ffff:b单元中的数据复制到0:200~0:20b单元中
- Cacti监控华为交换机不显示端口解决办法
- CH 6202 黑暗城堡
- 个人微信号二次开发sdk协议,微信个人号开发API接口
- Microsoft Orleans 之 入门指南
- java模拟京东登陆_模拟登陆京东并访问我的订单
- 小程序即将上线,现在就可以开发啦
- 国内下载android源码,Android国内源码下载——亲测成功-Go语言中文社区
- 快递100发送短信提醒
- iOS直接获取摄像头数据