가감 승제 의 c + + 실현
1810 단어 C/C++
#include
using namespace std;
int Add(int a,int b)//
{
int x,y,icarry=0;//icarry
int result=0;
//
for(int n=0;n<32;n++){
// a,b
x=a&1;
y=b&1;
//
int bit=0;
bit=(x^y)^icarry;
icarry=(x&y)|(y&icarry)|(icarry&x);
if(bit==1)
result=result|(1<>1;
b=b>>1;
}
return result;
}
int Sub(int a,int b)//
{
b=Add(~b,1);//
return Add(a,b);
// :
/* return Add(a,-b);*/
}
int mul(int a,int b)//
{
int sign=a^b;//sign<0
int result=0;//
//a,b
a=a<0?Add(~a,1):a;
b=b<0?Add(~b,1):b;
while(a)
{
if(a&0x1)
result=Add(result,b);
b=b<<1;
a=a>>1;
}
if(sign<0) result=Add(~result,1);//
return result;
}
int divide(int a, int b)//
{
//
int dividend = a < 0 ? Add(~a, 1) : a;
int divisor = b < 0 ? Add(~b, 1) : b;
//
int remainder = dividend;
int quotient = 0;
while(remainder >= divisor)
{
remainder = Sub(remainder, divisor);
quotient = Add(quotient, 1);
}
//
if((a ^ b) < 0)
{
quotient = Add(~quotient, 1);
}
return quotient;
}
int remainder(int a, int b)//
{
//
int dividend = a < 0 ? Add(~a, 1) : a;
int divisor = b < 0 ? Add(~b, 1) : b;
//
int remainder = dividend;
int quotient = 0;
while(remainder >= divisor)
{
remainder = Sub(remainder, divisor);
quotient = Add(quotient, 1);
}
//
if(a < 0)
{
remainder = Add(~remainder, 1);
}
return remainder;
}
int main()
{
int a=666666,b=-333333;
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
09.문자 / 메모리영역//메모리 영역 스택 데이터 ROM(코드) //읽기전용메모리 문자 char(1),wchar(2) 바이트 . char c = 'a'; wchar_t wc = L'a';...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.