將整數(shù)的二進制奇偶位互換

/*
將一個整數(shù)的奇偶位互換
例如輸入整數(shù)9,二進制表示形式為1001
互換后的結(jié)果為0110

    神奇的算法:
    知識點一: 位運算中,1與一個數(shù)字進行與運算等于該數(shù)字,其實這是一種保留數(shù)字的運算
    例如 1 和0進行與運算,結(jié)果是0自己
    1和 1進行與運算,結(jié)果也是1自己,那么1和任何數(shù)進行與運算其實是一種保留的運算

    知識點二:位運算中,0與一個數(shù)字進行與運算,等于0,其實這是一種舍棄數(shù)字的運算
    例如 0 和 0進行與運算,結(jié)果是0
    0和1進行與運算,結(jié)果還是0,已經(jīng)舍棄了1,

    算法核心:將目標整數(shù),假設(shè)是9,即1001
    第一步:先將...00001001與運算它01010101010101...一共32位,因為int占4個字節(jié),一個字節(jié)8位,
    這里的010101位偶數(shù)位是1
    結(jié)果是 1001
          &0101
          -----
           0001  -----記錄為 ou
   第二步:再將1001與101010......1010進行與運算,這里的1010位奇數(shù)為是1
   結(jié)果是 1001
         &1010
         -----
          1000   -----記錄為 ji
    第三步:將ou 左移一位,將ji右移一位
    再進行異或運算,結(jié)果為交換奇偶位
    0001  ---ou左移得到0010
    1000  ---ji右移得到0100
    進行異或運算  0010
                 ^0100
                 -----
                  0110  ------結(jié)果

    知識點三:
    01010101....0101 可用 0x55555555 表示
    因為 是 32位 ,即0101 0101 0101 0101 0101 0101 0101 0101
    每一個4位可以用一個16進制表示,而0101 是5
    所以有8個5 , 即0x55555555
    010101010....0101 可用 0x55555555 表示

    同理1010 等于10 ,10用16進制表示是a
    10101010....1010 可用0xaaaaaaaa表示
 */
import java.util.Scanner;

public class 將整數(shù)的二進制奇偶位互換 {
   //測試輸入9,二進制位1001, 輸出6 二進制位110,110前面的0被省略了
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String s = Integer.toBinaryString(n);
        System.out.println(s);

        int ji = n&0xaaaaaaaa; //101010....
        int ou = n&0x55555555; //010101...
        int result = (ou<<1)^(ji>>1);
        System.out.println(result);
        System.out.println(Integer.toBinaryString(result));

    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甫恩,一起剝皮案震驚了整個濱河市逆济,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磺箕,老刑警劉巖奖慌,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異松靡,居然都是意外死亡简僧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門雕欺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岛马,“玉大人,你說我怎么就攤上這事屠列±材妫” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵笛洛,是天一觀的道長夏志。 經(jīng)常有香客問我,道長苛让,這世上最難降的妖魔是什么沟蔑? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蝌诡,結(jié)果婚禮上溉贿,老公的妹妹穿的比我還像新娘枫吧。我一直安慰自己浦旱,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布九杂。 她就那樣靜靜地躺著颁湖,像睡著了一般宣蠕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上甥捺,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天抢蚀,我揣著相機與錄音,去河邊找鬼镰禾。 笑死皿曲,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的吴侦。 我是一名探鬼主播屋休,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼备韧!你這毒婦竟也來了劫樟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤织堂,失蹤者是張志新(化名)和其女友劉穎叠艳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體易阳,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡附较,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了潦俺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翅睛。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖黑竞,靈堂內(nèi)的尸體忽然破棺而出捕发,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布鸳慈,位于F島的核電站尚卫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏法挨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一幅聘、第九天 我趴在偏房一處隱蔽的房頂上張望凡纳。 院中可真熱鬧,春花似錦帝蒿、人聲如沸荐糜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暴氏。三九已至延塑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間答渔,已是汗流浹背关带。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沼撕,地道東北人宋雏。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像务豺,于是被迫代替她去往敵國和親好芭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 爬蟲是python的一個特色冲呢,先讓我們了解下爬蟲的基本流程: 一舍败、發(fā)起請求:通過HTTP庫向目標站點發(fā)起請求(re...
    位右虛左閱讀 1,030評論 1 1
  • 紅燈亮起 一少年睡眼朦朧,打開門敬拓,又看見這個煩人的女人邻薯,不耐煩的說, “你怎么又來了乘凸,快走厕诡,一會我爸回來,又要吵架...
    甜辣沛公閱讀 264評論 0 1
  • 王禹偁 雨恨云愁营勤,江南依舊稱佳麗灵嫌。水村漁市,一縷孤煙細葛作。...
    賀清晨的家長閱讀 159評論 1 4
  • 今天聽聞吳總自殺了寿羞,心情很不舒服。業(yè)務(wù)上有諸多的不順心赂蠢,但之前每到黃山都把我照顧的很好绪穆。雖然商人利字當頭,合作過程...
    柴雞蛋炒米飯閱讀 140評論 0 2
  • 看到這個題目大家一定很驚訝虱岂,沒錯玖院,就是吃豬食,確切地說是我親口吃豬食的一次經(jīng)歷第岖,更是難忘那個曾經(jīng)帶我吃過豬食的人难菌。...
    靜待花開芬芳來閱讀 594評論 1 3