用位運算實現四則運算之加減乘除

2021-08-26 19:09:41 字數 1450 閱讀 3694

加法運算:

int addwithoutarithmetic(int num1,int num2)

簡化一下:

int add(int a,int b)

上面的思路就是先不計進製相加,然後再與進製相加,隨著遞迴,進製會變為0,遞迴結束。

非遞迴的版本如下:

int add(int a, int b)

return a;

}

減法運算:

//這個和加法一樣了,首先取減數的補碼,然後相加。

int negtive(int a) //取補碼

int sub(int a, int b)

正數乘法運算:

//正數乘法運算

int pos_multiply(int a,int b)

return ans;

}

整數除法(正整數)

//除法就是由乘法的過程逆推,依次減掉(如果x夠減的)y^(2^31),y^(2^30),...y^8,y^4,y^2,y^1。減掉相應數量的y就在結果加上相應的數量。

int pos_div(int x,int y)

return a;

}//這個和加法一樣了,首先取減數的補碼,然後相加。

int negtive(int a) //取補碼

int sub(int a, int b)

// 判斷正負

int ispos( int a )

int isneg( int a )

int iszero( int a )

//正數乘法運算

int pos_multiply(int a,int b)

return ans;

}//乘法運算

int multiply(int a,int b)

return negtive( pos_multiply( negtive(a), b ) );

} return negtive( pos_multiply(a, negtive(b)) );

}//除法就是由乘法的過程逆推,依次減掉(如果x夠減的)y^(2^31),y^(2^30),...y^8,y^4,y^2,y^1。減掉相應數量的y就在結果加上相應的數量。

int pos_div(int x,int y)

return (c&a);

} // 比較兩個數的大小

int isbig( int a, int b )

return 0;

} if( isneg(b) )

return 1;

return isbig_pos(a, b);

}

用位運算實現四則運算之加減乘除

加法運算 cpp view plain copy intaddwithoutarithmetic intnum1,intnum2 簡化一下 cpp view plain copy intadd inta,intb 上面的思路就是先不計進製相加,然後再與進製相加,隨著遞迴,進製會變為0,遞迴結束。非遞...

用位運算實現四則運算之加減乘除

按位異或 按位與 按位或 計算機系統中,數值一律用補碼來表示 因為補碼可以使符號位和數值位統一處理,同時可以使減法按照加法來處理。對補碼做簡單介紹 數值編碼分為原碼,反碼,補碼,符號位均為0正1負。原碼 補碼 數值位取反加1 補碼 原碼 對該補碼的數值位繼續 取反加1 補碼 的絕對值 稱為真值 正數...

用位運算實現四則運算之加減乘除

原文 用位運算實現四則運算之加減乘除 遞迴版本 int add int num1,int num2 遞迴簡化版本 int add2 int num1,int num2 非遞迴版本 int add3 int num1,int num2 return num1 兩數相加,和的部分可用 異或 完成,進製部...