• <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>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉,開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            C++位操作

            Posted on 2011-04-08 02:06 S.l.e!ep.¢% 閱讀(774) 評論(0)  編輯 收藏 引用 所屬分類: C++
            C++位操作包括兩種:傳統的C語言方式的位操作和C++中利用bitset容器的位操作
            ???
            一、傳統的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變為0,0變為1。
            << 按位左移操作符:exp<<n,將容器中所有的位向左移n位,空出的位用0填充。
            >> 按位右移操作符:exp>>n,將容器中所有的位向右移n位,空出的位用0填充。
            |=,&=,^= 分別對應|&^三種操作符的復合操作符。
            3.常用操作
            ?? 這里我們假設有一個result的unsigned int變量用來儲存32個學生的成績(通過和不通過分別用0和1),這樣result就有33位(result從右至左,從0開始計算位數,在這個例子中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)聲明一個指定位數的空容器(所有位設為0): bitset<int> bits;
            ?(b)聲明一個指定位數并將指定的幾個位初始化為相應值的容器: bitset<n> bits(int);
            ???? bitdet<int> bits(string&)
            總結:bitset模板類中類型參數傳遞容器的位數,而構造函數參數通過一個int或一個string&值來從右至左初始化容器中的相應值。
            3.bitset的基本用法:
            4.bitset與傳統C位操作及字符串的轉換
            ?? 可以通過to_string()成員將容器轉輸出為一個string字符串,另外還可以用to_long()成員將容器輸出到傳統的用于C風格的位容器中。如:
            ? unsigned long bits = bits.to_long();
            ? sting str(bits.to_string());
            5.bitset支持所有的位操作符。
            亚洲国产精品综合久久一线| 欧美亚洲另类久久综合婷婷| 无码AV中文字幕久久专区| 久久亚洲AV成人无码软件| 久久精品国产乱子伦| 国产一区二区精品久久| 久久综合亚洲色HEZYO国产| 无码人妻久久一区二区三区| 伊人热人久久中文字幕| 伊人久久大香线蕉综合Av | 亚洲精品乱码久久久久久按摩| 久久香综合精品久久伊人| 国内精品伊人久久久久网站| 色婷婷综合久久久中文字幕| 国内精品伊人久久久久网站| 亚洲国产另类久久久精品小说| 久久精品国产一区二区三区| 久久久久久无码Av成人影院| 欧美国产精品久久高清| 久久99精品综合国产首页| 久久综合给合久久狠狠狠97色 | 蜜桃麻豆www久久国产精品| 成人国内精品久久久久一区| 国产精品中文久久久久久久| 99久久国产亚洲高清观看2024 | 99久久精品久久久久久清纯| 久久国产高潮流白浆免费观看| 国产香蕉久久精品综合网| 青青青青久久精品国产h久久精品五福影院1421| 亚洲va久久久噜噜噜久久狠狠| 合区精品久久久中文字幕一区| 久久99精品久久久久久秒播| 91精品国产综合久久香蕉 | 亚洲美日韩Av中文字幕无码久久久妻妇| MM131亚洲国产美女久久| 久久久av波多野一区二区| 久久精品国产亚洲av高清漫画| 久久久久99精品成人片试看| 亚洲AV无码久久精品色欲| 亚洲乱码中文字幕久久孕妇黑人| 久久精品国产亚洲av麻豆图片|