• <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.¢%

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

            C++位操作

            Posted on 2011-04-08 02:06 S.l.e!ep.¢% 閱讀(777) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++
            C++位操作包括兩種:傳統(tǒng)的C語(yǔ)言方式的位操作和C++中利用bitset容器的位操作
            ???
            一、傳統(tǒng)的C方式位操作:
            1.基本操作:
            ?? 使用一個(gè)unsigned int變量來(lái)作為位容器。
            2.操作符:
            |?? 按位或操作符:result=exp1|exp2;當(dāng)exp1和exp2中對(duì)應(yīng)位中至少有一個(gè)為1時(shí),result中對(duì)應(yīng)位為1,否則為0。
            &??按位與操作符::result=exp1&exp2;當(dāng)exp1和exp2中對(duì)應(yīng)位全為1時(shí),result中對(duì)應(yīng)位為1,否則為0。
            ^? 按位異或或操作符:result=exp1^exp2;當(dāng)exp1和exp2中對(duì)應(yīng)位不相同時(shí),result中對(duì)應(yīng)位為1,否則為0。
            ~? 反轉(zhuǎn)操作符:將位容器中的所有位都反轉(zhuǎn),1變?yōu)?,0變?yōu)?。
            << 按位左移操作符:exp<<n,將容器中所有的位向左移n位,空出的位用0填充。
            >> 按位右移操作符:exp>>n,將容器中所有的位向右移n位,空出的位用0填充。
            |=,&=,^= 分別對(duì)應(yīng)|&^三種操作符的復(fù)合操作符。
            3.常用操作
            ?? 這里我們假設(shè)有一個(gè)result的unsigned int變量用來(lái)儲(chǔ)存32個(gè)學(xué)生的成績(jī)(通過(guò)和不通過(guò)分別用0和1),這樣result就有33位(result從右至左,從0開(kāi)始計(jì)算位數(shù),在這個(gè)例子中0位被浪費(fèi))。
            (a) 將第27位設(shè)置為及格(設(shè)作1)其他位不變:
            ?? result|=(1<<27) //任意的位值與1作按位或操作其值為1,而與0作按位與操作其值不變
            (b) 將第27位設(shè)置成不及格(設(shè)為0)。
            ?? result&=~(1<<27) //任意的位值與0作按位與操作其值為0,而與1作按位與操作其值不變
            (c) 反轉(zhuǎn)第27位的值。
            ?? result^=(1<<27) //任意的位值與1作按位異或操作其值為1,而與0作按位異與操作其值不變
            ?
            二、C++中的bitset容器
            1.頭文件:
            ? #include <bitset>
            2.聲明一個(gè)容器:
            ?(a)聲明一個(gè)指定位數(shù)的空容器(所有位設(shè)為0): bitset<int> bits;
            ?(b)聲明一個(gè)指定位數(shù)并將指定的幾個(gè)位初始化為相應(yīng)值的容器: bitset<n> bits(int);
            ???? bitdet<int> bits(string&)
            總結(jié):bitset模板類中類型參數(shù)傳遞容器的位數(shù),而構(gòu)造函數(shù)參數(shù)通過(guò)一個(gè)int或一個(gè)string&值來(lái)從右至左初始化容器中的相應(yīng)值。
            3.bitset的基本用法:
            4.bitset與傳統(tǒng)C位操作及字符串的轉(zhuǎn)換
            ?? 可以通過(guò)to_string()成員將容器轉(zhuǎn)輸出為一個(gè)string字符串,另外還可以用to_long()成員將容器輸出到傳統(tǒng)的用于C風(fēng)格的位容器中。如:
            ? unsigned long bits = bits.to_long();
            ? sting str(bits.to_string());
            5.bitset支持所有的位操作符。
            综合网日日天干夜夜久久| 国产欧美久久久精品| 2021国产精品久久精品| 久久亚洲日韩精品一区二区三区| 99久久精品国产麻豆| 久久人人爽人人爽AV片| 无码AV波多野结衣久久| 久久国产福利免费| 久久成人精品视频| 亚洲乱码中文字幕久久孕妇黑人| 国产午夜精品理论片久久| 久久亚洲私人国产精品| 三级三级久久三级久久 | 久久精品一本到99热免费| 91亚洲国产成人久久精品| 无码专区久久综合久中文字幕| 久久影视综合亚洲| 亚洲一区中文字幕久久| 久久久久人妻精品一区| 国产A三级久久精品| 亚洲&#228;v永久无码精品天堂久久| 精品一区二区久久久久久久网站| 午夜精品久久久久久中宇| 久久久久久久久久久| 青春久久| 亚洲伊人久久综合影院| 久久久久国产成人精品亚洲午夜| 久久精品国产99国产电影网| 一本色道久久HEZYO无码| 久久综合视频网| 中文精品99久久国产| 亚洲精品99久久久久中文字幕| 久久精品国产精品亚洲人人| 亚洲一区中文字幕久久| 国产真实乱对白精彩久久| AA级片免费看视频久久| 91精品婷婷国产综合久久| 91亚洲国产成人久久精品网址| 亚洲国产精品久久久久久| 久久精品国产一区二区三区| 精品久久久久久国产牛牛app|