• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            若我的小家

            -編程,讀書,感悟,旅游,設計
            posts - 21, comments - 0, trackbacks - 0, articles - 0

            [轉載]C++位操作介紹

            Posted on 2008-09-22 16:58 若我 閱讀(153) 評論(0)  編輯 收藏 引用
            C++位操作包括兩種:傳統(tǒng)的C語言方式的位操作和C++中利用bitset容器的位操作
               
            一、傳統(tǒng)的C方式位操作:
            1.基本操作:
               使用一個unsigned int變量來作為位容器。
            2.操作符:
            |   按位或操作符:result=exp1|exp2;當exp1和exp2中對應位中至少有一個為1時,result中對應位為1,否則為0。
            &  按位與操作符::result=exp1&exp2;當exp1和exp2中對應位全為1時,result中對應位為1,否則為0。
            ^  按位異或或操作符:result=exp1^exp2;當exp1和exp2中對應位不相同時,result中對應位為1,否則為0。
            ~  反轉操作符:將位容器中的所有位都反轉,1變?yōu)?,0變?yōu)?。
            << 按位左移操作符:exp<<n,將容器中所有的位向左移n位,空出的位用0填充。
            >> 按位右移操作符:exp>>n,將容器中所有的位向右移n位,空出的位用0填充。
            |=,&=,^= 分別對應|&^三種操作符的復合操作符。
            3.常用操作
               這里我們假設有一個result的unsigned int變量用來儲存32個學生的成績(通過和不通過分別用0和1),這樣result就有33位(result從右至左,從0開始計算位數(shù),在這個例子中0位被浪費)。
            (a) 將第27位設置為及格(設作1)其他位不變:
               result|=(1<<27) //任意的位值與1作按位或操作其值為1,而與0作按位與操作其值不變
            (b) 將第27位設置成不及格(設為0)。
               result&=~(1<<27) //任意的位值與0作按位與操作其值為0,而與1作按位與操作其值不變
            (c) 反轉第27位的值。
               result^=(1<<27) //任意的位值與1作按位異或操作其值為1,而與0作按位異與操作其值不變
             
            二、C++中的bitset容器
            1.頭文件:
              #include <bitset>
            2.聲明一個容器:
             (a)聲明一個指定位數(shù)的空容器(所有位設為0): bitset<int> bits;
             (b)聲明一個指定位數(shù)并將指定的幾個位初始化為相應值的容器: bitset<n> bits(int);
                 bitdet<int> bits(string&)
            總結:bitset模板類中類型參數(shù)傳遞容器的位數(shù),而構造函數(shù)參數(shù)通過一個int或一個string&值來從右至左初始化容器中的相應值。
            3.bitset的基本用法:
            4.bitset與傳統(tǒng)C位操作及字符串的轉換
               可以通過to_string()成員將容器轉輸出為一個string字符串,另外還可以用to_long()成員將容器輸出到傳統(tǒng)的用于C風格的位容器中。如:
              unsigned long bits = bits.to_long();
              sting str(bits.to_string());
            5.bitset支持所有的位操作符。
            久久综合五月丁香久久激情| 亚洲精品tv久久久久| 久久被窝电影亚洲爽爽爽| 免费精品99久久国产综合精品| 大美女久久久久久j久久| 亚洲欧美另类日本久久国产真实乱对白| 久久亚洲sm情趣捆绑调教| 性做久久久久久久| 久久精品国产99久久香蕉| 亚洲色欲久久久综合网东京热| 久久精品国产99国产精偷| 久久久一本精品99久久精品88| 久久国产一区二区| 亚洲国产另类久久久精品| 国产精品九九久久免费视频| 午夜精品久久久久久久久| 亚洲?V乱码久久精品蜜桃 | 国产A级毛片久久久精品毛片| 97精品国产91久久久久久| 久久亚洲sm情趣捆绑调教| 久久久国产精华液| 精品久久久久久无码中文字幕| 久久久久久久久久免免费精品| 久久亚洲中文字幕精品有坂深雪 | 91久久婷婷国产综合精品青草| 区久久AAA片69亚洲| 国产精品美女久久久免费| 精品熟女少妇a∨免费久久| 日韩欧美亚洲综合久久| 久久久久久国产精品美女| 办公室久久精品| 91精品国产高清久久久久久国产嫩草| 伊人久久大香线蕉av不卡| 久久久久久精品免费看SSS| 久久青青草原精品国产不卡| 精品久久久久国产免费| 一本伊大人香蕉久久网手机| 精品免费tv久久久久久久| 久久香蕉国产线看观看乱码| 色综合久久综精品| 久久高清一级毛片|