求乙個二進位制串mod 3的餘數
這是某bat公司技術面三面的一道**題目,沒做出來,現在整理一波
首先,第乙個思路是將這個二進位制串轉換為十進位制,然後再進行計算,但是這個肯定不是面試官想要的答案,對於很長的二進位制串不能轉換為十進位制數字。
下面講第二個思路,狀態機(其實可用於求mod任何數的情況)
整個狀態機分為三個狀態,0,1,2,分別代表三種餘數情況,從二進位制串的第一位開始讀,如果為0,則從0開始,下面讀到乙個1,則轉換到狀態1(相當於0*2+1),讀到的還是0則轉換到狀態0(相當於0*2+0),以此類推,形成狀態機如下:
根據這個狀態機寫**就很容易啦。
判斷二進位制數除以3的餘數
乙個非常有意思的問題 判斷乙個二進位制的數除以3的餘數。思路 首先肯定會想到十進位制除3整除的規則 每位數相加的和能被3整除。但是按照這樣的思路去考慮二進位制的情況容易進入到死胡同裡。考慮以下方法 二進位制的數再加一位0就是原來的值 2,再加上一位1就是原來的值 2 1。那麼考慮以下的狀態轉換 以下...
JS 二進位制計算,如何得到乙個負數的二進位制表示
題目 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示 收穫 1.由負數的補碼求他的絕對值補碼 負二進位制數的絕對值,只要各位 包括符號位 取反,再加1,就得到其絕對值。2.負數正碼取反 不包括符號位 1即得到補碼表示 3.js中求二進位制,number tostring 2 負數和...
二進位制 求乙個數的二進位制表示中1的個數
題目 求乙個正整數x中1的個數 思考 二進位制是乙個01串。統計該串中1的個數。方法1 將x按照樸素的方法轉化成二進位制串,如果x的某二進位制位上為1,則res 求得最後x中1的個數。int x while x return res res即是x的二進位制數中1的個數用這種方法求,時間複雜度為o n...