⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculate.cpp

📁 用c实现的不用+
💻 CPP
字号:
#include <iostream.h>

int   add(int   a,int   b)   
  {   
  int   r   =   0;   
  int   c   =   0;   
  for(int   i=1;i   !=   0;i<<=1)   
  {   
  r   |=   (a^b^c)   &   i;   
  c   =   (((a&b)   |   (b&c)   |   (a&c))   &   i)<<1;   
  }   
  return   r;   
  }   
  int   sub(int   a,int   b)   
  {   
  int   r   =0;   
  int   c=   0;   
  for(int   i=1;i!=0;i<<=1)   
  {   
  r   |=   (a^b^c)   &   i;   
  c   =   ((~a&(b|c))   |   (a&b&c))<<1;   
  }   
  return   r;   
  }   
  int   mul(int   a,int   b)   
  {   
  int   r   =   0;   
  for(int   i=1;i!=0;i<<=1,a<<=1)   
  {   
  if   (b   &   i)   
  r   =   add(r,a);   
  }   
  return   r;   
  }   
  float   div(int   a,int   b)   
  {   
  int   r   =   0;   
  if   (b   ==   0)   
  {   
  if   (a   ==   0)   
  {   
  r   =   0xffc00000;//-1.#IND0   
  }   
  else   
  {   
  if(a   <   0)   
  r   =   0xff800000;//-1.#INF0   
  else   
  r   = 0x7f800000;//1.#INF0   
  }   
  }   
  else   if(a   !=   0)   
  {   
  int   sign   =   0;   
  if   (a   <   0)   
  {   
  sign   =1;   
  a   =   -a;   
  }   
  if   (b   <   0)   
  {   
  sign   ^=   1;   
  b   =   -b;   
  }   
  int   ext   =   127;   
  int   bit   =   0x40000000;   
  while((a&bit)==0)   
  {   
  a   <<=   1;   
  ext   =   sub(ext,1);   
  }   
  while((b&bit)==0)   
  {   
  b   <<=1;   
  ext   =   add(ext,1);   
  }   
  unsigned   x   =   (unsigned)a;   
  unsigned   y   =   (unsigned)b;   
  if   (x   <   y)   
  {   
  ext   =   sub(ext,1);   
  x<<=1;   
  }   
  for(bit=1<<23;bit>0;bit>>=1)   
  {   
  r   <<=   1;   
  if   (x   >=   y)   
  {   
  x   =   sub(x,y);   
  r   |=   1;   
  }   
  x   <<=   1;   
  }   
  if   (x   >=   y)   
  {   
  r   =   add(r,1);   
  if   ((r   &   0x1000000)   !=   0)   
  {   
  ext   =   add(ext,1);   
  r   >>=1;   
  }   
  }   
  r   =   (sign   <<   31)   |   (ext<<23)   |   (r   &   0x7fffff);   
  }   
  return   *(float*)&r;   
  }   


void main()
{
	
	cout<<add(4,6)<<endl;
	cout<<sub(9,6)<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -