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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基础编程题之最大连续bit数(位运算)

發布時間:2025/3/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基础编程题之最大连续bit数(位运算) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

這道題涉及到的也是位運算,具體思路就是,定義一個count,定義一個max,從右向左依次掃描這個數的二進制位,遇到1就count++,遇到0就將count置為0,并且將max和count進行比較,并把大的賦值給max

同時還有一個問題,就是如何判斷一個二進制數字的某一位是0還是1,我們只需要將某個數移位然后讓它和1進行與運算,如果結果為1表明此位為1,否則此位為0

using namespace std;int main() {int num=0;while(cin>>num){int count=0;int max=0;while(num){if(num&1){count++;}else{if(count>max){max=count;}count=0;}num=num>>1;}cout<<max<<endl;}return 0; }

這樣提交后,通過率為一半

其中200的二進制位為1100 1000,可以發現在最后一次結束時,由于沒有遇到最后一位的0,所以沒有進入循環,因此max沒有被更新,所以判斷代碼換到上一個if分支中即可

using namespace std;int main() {int num=0;while(cin>>num){int count=0;int max=0;while(num){if(num&1){if(count>max){max=count;}count++;}else{count=0;}num=num>>1;}cout<<max<<endl;}return 0; }

總結

以上是生活随笔為你收集整理的基础编程题之最大连续bit数(位运算)的全部內容,希望文章能夠幫你解決所遇到的問題。

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