昨天寫了2個正數相乘,今天讓我們來用位操作符寫2個正負數相乘吧,給定2個數a,b,計算a*b
a ba*b的值
155 -152
-23560
負數乘法跟正數乘法運算一樣。我們只需要把負數變成正數並且記錄哪個是負數,最後根據這個二個數是否是負數的情況來判斷r是否為負數。
#include
using
namespace
std;
int add(int a, int b)
int s = a ^ b;
int c = (a & b) << 1;
return add(s, c);
}bool isfushu(int a)
int multi(int a, int b)
if (isfushu(b))
int r = 0;
while (b)
a <<= 1;
b >>= 1;
}if (za != zb)
return r;
}int main()
每日一題 No 21 a b(位操作符) 正整數
昨天寫了2個數相乘,今天讓我們來用位操作符寫2個正整數相除吧,給定2個數a,b,計算a b,並輸出商和餘數 a ba b的商 a b的餘數 155 152 1 3具體的看這裡,我覺得寫得特別好,反正我是看這個寫出來的 計算機數值中的乘法除法 以下是我個人對上面這個鏈結的理解,並根據理解寫出的 我們算...
LeetCode 每日一題338 位元位計數
給定乙個非負整數num。對於0 i num範圍中的每個數字i,計算其二進位制數中的1的數目並將它們作為陣列返回。示例 1 輸入 2輸出 0 1,1 示例 2 輸入 5輸出 0 1,1 2,1,2 高階 要求演算法的空間複雜度為o n 你能進一步完善解法嗎?要求在c 或任何其他語言中不使用任何內建函式...
每日一題 20 字串相乘與相加
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。num1 和 num2 只包含數字 0 9。num1 和 ...