如何不用加法符號計算a b 的值?

2022-06-21 04:42:07 字數 508 閱讀 5293

a+b的值可以等價於a^b+(a&b)<<1,也就是a異或b的值加上a與b的值再左移一位。a異或b的值被叫做非進製求和,(a&b)<<1是求每位的進製。舉個例子就明白為什麼是這樣了。

比如計算5+4,對於二進位制而言,100+101=1001,產生了進製。那麼,100101=001,100&101=100,左移一位就是1000(你算出是100嗎?這裡要注意,左移必須在右邊補0),所以,1000+001=1001,5+4正好是9.我是這麼理解的。下面舉個兩位數的,原理是一樣的。13+9,11011001=0100,1101&1001=1001,左移一位就是10010,10010+0100=10110,正好是22.

但是上面還是出現了進製和非進製的和,但是不能用加法直接相加。這裡用到了乙個小技巧,遞迴操作。遞迴的終止條件是進製為0,返回非進製和。舉個最簡單的例子就行了,比如 2+3 ,進製是不是0,整個和是不是非進製和?

簡單的**:

'''

class solution 

};

MATLAB的符號計算

數學計算有數值計算與符號計算之分。這兩者的根本區別是 數值計算的表示式 矩陣變數中不允許有未定義的自由變數 而符號計算可以含有未定義的符號變數。對於一般的程式設計軟體如 c,c 等語言實現數值計算還可以 但是實現符號計算並不是一件容易的事。而 matlab 自帶有符號工具箱 symbolic mat...

不使用加減乘除符號計算加法

給定兩個正整數,不使用加減乘除符號計算它們的和。方法 例如,5 17 22,5是101,17是10001。第一步各位相加得到的結果為10100 不考慮進製 與異或操作相符 第二步記下進製,為10 可用 操作來記下 第三步把前兩步的結果相加,得到10110,轉換成十進位制正好為22.重複上述過程,直到...

Matlab中的符號計算

儘管本人認為matlab是乙個優秀的數值計算軟體,不應該拿它來做符號計算,然而客觀上matlab確實有符號工具箱且有很多人使用。因此這裡也整理了一點關於符號計算的認識。下面的說法或程式在matlab 2013b下是成立的。更早版本的符號工具箱有一些差別。1.定義符號變數 syms x y 用syms...