资源简介
用C语言实现的二进制数一位乘运算,BOOTH算法的实现
代码片段和文件信息
#include
#include
#include
int main()
{
int ijk;
int cha;
int jw=0;//进位标记符号
int cd;//字符串长度
int biaoji;
char bcs[21]={0}cs[21]={0}jg[41]={0};//赋值为0
char *bufenji[41]={0};
printf(“请输入:“);
scanf(“%s %s“bcscs);
for(i=0;i {
jg[i]=bcs[i];
}
//将小数点全部变成数字 即有两位符号位
if(bcs[0]==‘+‘)bcs[2]=‘0‘;//将bcs中的原码变补码 jg记录-x的补码
if(bcs[0]==‘-‘)//负数情况
{
bcs[1]=bcs[2]=‘1‘;//符号位为11
for(i=strlen(bcs)-1;i>2;i--)//从尾部开始
{
if(bcs[i]==‘1‘)
{
for(i=i-1;i>2;i--)
{
if(bcs[i]==‘0‘)
bcs[i]=‘1‘;//取反
else
bcs[i]=‘0‘;
}
break;
}
}
}
if(jg[0]==‘-‘)
jg[2]=‘0‘;//-x的补码
if(jg[0]==‘+‘)
{
jg[1]=jg[2]=‘1‘;
for(i=strlen(jg)-1;i>2;i--)
{
if(jg[i]==‘1‘)
{
for(i=i-1;i>2;i--)//取反操作
{
if(jg[i]==‘0‘)
jg[i]=‘1‘;
else
jg[i]=‘0‘;
}
break;
}
}
}
cs[strlen(cs)]=‘0‘;//将b中的原码变补码 尾部填0 即为y(n+1)
if(cs[0]==‘+‘)//正值补码数值部分不变
cs[2]=‘0‘;
if(cs[0]==‘-‘)//负值操作
{
cs[1]=cs[2]=‘1‘;//符号位改为1 1
for(i=strlen(cs)-1;i>2;i--)
{
if(cs[i]==‘1‘)
{
for(i=i-1;i>2;i--)//取反操作
{
if(cs[i]==‘0‘)
cs[i]=‘1‘;
else
cs[i]=‘0‘;
}
break;
}
}
}
bufen=(char*)malloc(strlen(bcs));//开辟新空间
for(i=0;i bufen[i]=‘0‘;
for(i=strlen(cs)-1;i>2;i--)
{
cha=cs[strlen(cs)-1]-cs[strlen(cs)-2];// y(n+1)-y(n)
if(cha==1)//部分积加【x】补码 右移一位
{
for(j=strlen(bcs)-1;j>0;j--)
{
if(bcs[j]-‘0‘+bufen[j]-‘0‘+jw==3)//1+1 进位为1
{
bufen[j]=‘1‘;
jw=1;
}
else if(bcs[j]-‘0‘+bufen[j]-‘0‘+jw==2)//1+0进位为1 或者 0+1进位为1 或者 1+1 进位为0
{
相关资源
- C语言课程设计报告-图书管理系统.z
- C++开发精灵对战小游戏
- C++与js相互调用
- 使用Qt做的数据管理系统
- c++测试题aaaa
- c++职工工资管理系统
- VS2013开发的MFC下的Modbus RTU
- 电梯模拟C语言数据结构中国地质大学
- CVSD解码c语言代码
- 分数计算器C++
- c++职工管理系统链表
- 黑白棋游戏c语言代码
- c++密度据类MFC可视化
- 学生成绩管理系统v1.0
- c语言综合程序--ATM机
- 电信计费系统C++
- c++ 最小二乘算法拟合球心 使用Vs200
- MFC Afxcmn.h
- STM32F3 LCD1602 I2C驱动代码 C语言
- 加速度积分求速度和位移的c语言算法
- 感染EXE文件的VC++源码请谨慎使用.
- vc自动更新源码
- 博弈树树的c实现
- 模糊控制算法的c语言实现
- 仓库管理系统 c++
- 清华 严蔚敏 《数据结构(c语言版)
- C++生产者消费者问题
- 基于RFID门禁系统源码 C/C++
- 多国语言Demo源码 c++builder6编写
- C++ IOCP socket完成端口视频教程及源码
评论
共有 条评论