日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java实现三位数加减乘除_用Java位运算实现加减乘除四则运算

發布時間:2025/3/20 java 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现三位数加减乘除_用Java位运算实现加减乘除四则运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

感謝博客:http://blog.csdn.net/itismelzp/article/details/49621741? 提供的思路。

要用位運算來實現四則運算,不僅僅要知道&,|,~,^,<>怎么做,還需要先掌握位運算的幾個運算規律:

1:~n=-(n+1),比如:~3=-4

2:獲取整數n的二進制串中最后一個1:-n&n=~(n-1)&n

3:去掉整數n的二進制串中最后一個1:n&(n-1)。

然后,我們就可以使用常規位運算并結合上面的運算規律來實現四則運算了。

加法:a+b

由a^b可得按位相加后沒有進位的和;

由a&b可得可以產生進位的地方;

由(a&b)<<1得到進位后的值。

那么? 按位相加后原位和+進位和? 就是加法的和了,而? a^b +? (a&b)<<1? 相當于把? +? 兩邊再代入上述三步進行加法計算。直到進位和為0說明沒有進位了則此時原位和即所求和。

public int add(int a,intb) {int res=a;int xor=a^b;//得到原位和int forward=(a&b)<<1;//得到進位和if(forward!=0){//若進位和不為0,則遞歸求原位和+進位和

res=add(xor, forward);

}else{

res=xor;//若進位和為0,則此時原位和為所求和

}returnres;

}

減法:a-b

由-b=+(-b),~(b-1)=-b可得a-b=a+(-b)=a+(~(b-1))。把減法轉化為加法即可。

public int minus(int a,intb) {int B=~(b-1);returnadd(a, B);

}

乘法:a*b

先來看一下二進制乘法是怎么做的:

1011

* 1010

--------

10110 (1011<<1,相當于乘以0010)1011000 (1011<<3,相當于乘以1000)--------

1101110

可以看到,二進制乘法的原理是:從乘數的低位到高位,遇到1并且這個1在乘數的右起第i(i從0開始數)位,那么就把被乘數左移i位得到 temp_i 。直到乘數中的1遍歷完后,把根據各位1而得到的被乘數的左移值們 temp_i 相加起來即得乘法結果。那么根據這個原理,可以得到實現代碼:這里要點為:用i記錄當前遍歷的乘數位,當前位為1則被乘數左移i位并加到和中,同時i++處理下一位;為0則乘數右移,i++,處理下一位......直到乘數==0說明乘數中的1遍歷完了。此時把和返回即可。

public int multi(int a,intb){int i=0;int res=0;while(b!=0){//乘數為0則結束//處理乘數當前位

if((b&1)==1){

res+=(a<

b=b>>1;++i;//i記錄當前位是第幾位

}else{

b=b>>1;++i;

}

}returnres;

}

除法:a/b

除法的意義就在于:求a可以由多少個b組成。那么由此我們可得除法的實現:求a能減去多少個b,做減法的次數就是除法的商。

public int sub(int a,intb) {int res=-1;if(a

}else{

res=sub(minus(a, b), b)+1;

}returnres;

}

總結

以上是生活随笔為你收集整理的java实现三位数加减乘除_用Java位运算实现加减乘除四则运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。