当前位置: 代码迷 >> C语言 >> [求助]这个题怎么做啊
  详细解决方案

[求助]这个题怎么做啊

热度:291   发布时间:2005-01-19 13:39:00.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); }


----------------解决方案--------------------------------------------------------
  相关解决方案