资源简介
用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++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- C++纯文字DOS超小RPG游戏
- 个人日常财务管理系统(C语言)
- MFC数字钟(基于VC6.0)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- 安科瑞智能电能表MODBUS通讯程序 VC6
- C语言实现的一个内存泄漏检测程序
评论
共有 条评论