标题:[求助]这个题怎么做啊
只看楼主
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
得分:0 

#include <stdio.h> #include <process.h>

int add (int a,int b) { int i=0,j=0,c=0; for(i=0,j=0;i<15;++i){ if( ((a&1) & (b&1)) | ((a&1) & (j)) | ((b&1) & (j)) ){ if( (a&1) & (b&1) & j) c|=0x4000; j=1; } else{ if( (a&1) | (b&1) | j) c|=0x4000; j=0; } if(i<14){ c>>=1; a>>=1; b>>=1; } } a>>=1; b>>=1; if(j^(a&1)^(b&1)) c|=0x8000; return c; }

int sub (int a,int b) { return add(a,add(~b,1)); }

int mul(int a,int b) { int c=0; int sign=(((a&0x8000) ^ (b&0x8000)) >>15) & 0x0001; if(a<0) a=add(~a,1); if(b<0) b=add(~b,1); while(b>0){ if(b&1){ c=add(c,a); b=sub(b,1); } else{ a<<=1; b>>=1; } } if(sign) c=add(~c,1); return c; }

int div(int a,int b) { int i=0; int sign=(((a&0x8000) ^ (b&0x8000)) >>15) & 0x0001; if(b==0){ printf("error\n"); exit(0); } if(a<0) a=add(~a,1); if(b<0) b=add(~b,1); if(sign && a!=0) printf("-"); while(a>=b){ a=sub(a,b); i=add(i,1); } printf("%d",i); if(a!=0){ printf("."); a=mul(a,10); i=0; while(a>=b){ a=sub(a,b); i=add(i,1); } printf("%d",i); } return 0; } void main() { printf("\n%d %d %d ",add(3,5),sub(5,3),mul(3,5)); div(9,0); }

2005-01-19 13:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-11379-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.677565 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved