位運算

相關(guān)算法題目

顛倒給定的 32 位無符號整數(shù)的二進(jìn)制位。

示例 1:

輸入: 00000010100101000001111010011100
輸出: 00111001011110000010100101000000
解釋: 輸入的二進(jìn)制串 00000010100101000001111010011100 表示無符號整數(shù) 43261596,
因此返回 964176192,其二進(jìn)制表示形式為 00111001011110000010100101000000。
示例 2:

輸入:11111111111111111111111111111101
輸出:10111111111111111111111111111111
解釋:輸入的二進(jìn)制串 11111111111111111111111111111101 表示無符號整數(shù) 4294967293,
因此返回 3221225471 其二進(jìn)制表示形式為 10101111110010110010011101101001。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-bits
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

解答與解析

public class Solution {
    // you need treat n as an unsigned value
    public int reverseBits(int n) {
        int index=0;//記錄循環(huán)的次數(shù)
        int res=0;//用來存放輸出結(jié)果
        while(index<32){
            //數(shù)字有32位,因此循環(huán)32次
            res<<=1;//將res的二進(jìn)制碼向左移動1位,空出最低位用來存放目標(biāo)數(shù)據(jù)
            res|=(n&1);//(n&1)將源數(shù)據(jù)n執(zhí)行與操作,這樣可以得到n的最低位是0還是1。
            //然后將最低位和res做|=運算,即做`與`運算之后將值賦給res,這樣完成了一次將最低位數(shù)字放入最高位的操作
            n>>=1;//將源數(shù)據(jù)的二進(jìn)制碼右移一位,以待后續(xù)操作
            index++;//執(zhí)行循環(huán)之后遞增標(biāo)識符以控制循環(huán)
        }
        return res;//將最終結(jié)果返回
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容