伊人99re_av日韩成人_91高潮精品免费porn_色狠狠色婷婷丁香五月_免费看的av_91亚色网站

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁 > IT資訊 > 軟件研發(fā) > 如何在C和C ++中操作位?

如何在C和C ++中操作位?

2020-07-23 14:58:38 | 來源:中培企業(yè)IT培訓(xùn)網(wǎng)

計(jì)算機(jī)中的所有數(shù)據(jù)均以二進(jìn)制表示,即0或1。計(jì)算機(jī)不理解我們的語言,它們理解位。通常,程序員并不關(guān)心位級(jí)別的操作。那么如何在C和C ++中操作位?位表示在編程中,將n位整數(shù)存儲(chǔ)為由n位組成的二進(jìn)制數(shù)。因此,一個(gè)32位整數(shù)由32位組成,而64位整數(shù),由64位組成。在C ++編程語言中,int數(shù)據(jù)類型為16位,32位和64位類型。

  位表示

這是32位整數(shù)數(shù)字10的位表示形式:

00000000000000000000000000001010

在C ++中,int是帶符號(hào)的或無符號(hào)的,因此位表示形式是帶符號(hào)的或無符號(hào)的。

在帶符號(hào)的表示中,第一位表示數(shù)字的符號(hào)(0表示正,1表示負(fù)),其余n-1位包含數(shù)字的大小。

有符號(hào)和無符號(hào)表示之間存在聯(lián)系。簽名號(hào)碼:

-x 等于一個(gè)無符號(hào)數(shù)2^n – x。

-x (signed) = 2^n - x (unsigned)

int a = -10;

unsigned int b = a;

std::cout << a << " ";

/* -10 */std::cout << b << " ";

/* 4294967286 */

在簽名表示中,下一個(gè)數(shù)字2^(n – 1) – 1是-2^n – 1,并且以無符號(hào)表示形式,是下一個(gè)數(shù)字2^n – 1是0。

  位操作

我們可以使用&運(yùn)算符檢查數(shù)字是偶數(shù)還是奇數(shù)。如果x & 1 = 0然后x甚至x & 1 = 1然后x很奇怪 我們也可以這樣說x被...整除2^k確切的時(shí)間x & (2^k – 1)= 0.x<>k對(duì)應(yīng)于除法x通過2^k四舍五入為整數(shù)。

  通用位任務(wù)

unsigned int的二進(jìn)制表示形式:

void binary(unsigned int num)

{

for(int i = 256; i > 0; i = i/2) {

if(num & i)

std::cout << "1 ";

else

std::cout << "0 ";

}

std::cout << std::endl;

}

將位設(shè)置在位置:

int set_bit(int num, int position)

{

int mask = 1 << position;

return num | mask;

}

獲取位的位置:

bool get_bit(int num, int position)

{

bool bit = num & (1 << position);

return bit;

}

在清零位置:

int clear_bit(int num, int position)

{

int mask = 1 << position;

return num & ~mask;

}

  代表集

整數(shù)的位表示為0索引,并且索引從右側(cè)(即最低有效位)開始。這樣我們就可以代表集合的每個(gè)子集{0, 1, 2, ..., n-1}作為n位整數(shù),其位指示哪個(gè)元素屬于該子集。如果在數(shù)字的二進(jìn)制表示中索引3的位為1,索引4的位為0,則3屬于該子集,而4不屬于該子集。

對(duì)于32位整數(shù),集合為{0,1,2,…,31},子集為{1、3、4、8}。該集合的二進(jìn)制表示形式是:00000000000000000000000100011010,十進(jìn)制表示形式是2 ^ 8 + 2 ^ 4 + 2 ^ 3 + 2 ^ 1 = 282。

  代碼形成子集并向其中添加元素:

int add_elements_to_subset()

{

int subset = 0;

subset = subset | (1 << 1);

subset = subset | (1 << 3);

subset = subset | (1 << 4);

subset = subset | (1 << 8);

return subset;

}

打印子集元素的代碼:

void printing_subset(int subset)

{

for (int i = 0; i < 32; i++)

{

if (subset & (1 << i)) std::cout << i << " ";

}

}

  附加功能

g ++編譯器提供以下用于計(jì)數(shù)位的功能:

?__builtin_clz(x):數(shù)字開頭的零個(gè)數(shù)字

?__builtin_ctz(x):數(shù)字結(jié)尾處的零數(shù)字

?__builtin_popcount(x):數(shù)字中的個(gè)數(shù)

?__builtin_parity(x):1的奇偶校驗(yàn)(偶數(shù)或奇數(shù))

通過上述介紹,如何在C和C ++中操作位的相信大家已經(jīng)清楚了吧,想了解更多關(guān)于編程語言的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。

標(biāo)簽: C
主站蜘蛛池模板: 免费人成免费观看视频 | 欧美久久久网站 | 色又黄又爽18禁免费网站现观看 | 99久久视频 | 精品国产免费观看久久久 | 北条麻纪在线观看aⅴ | 欧美欧美欧美欧美首页 | 成人免费毛片片v | 能直接看av的网站 | 欧美视频免费在线观看 | 欧美日韩国产综合视频 | 黄色片免费在线看 | 成人毛片18女人毛片免费 | 91大神福利视频 | 欧美日韩国产综合草草 | 污污视频网站免费 | 调教凌虐妻妾奴在线播放 | 特大巨黑吊xxx | mm1314午夜福利视频 | 国产特级毛片AAAAAA高清 | 国产一级a爱片在线观看视频 | 小视频免费在线观看 | 中文字幕在线中文字幕在线中三区 | 国产一级a爱片在线观看视 黄色毛片免费进入 | 特级全黄久久久久久久久 | 99久久国产免费看 | 国产精品青青草 | 国产亲子乱高潮免费视频 | 完美世界免费观看完整在线观看 | 免费看操| 麻豆国产VA免费精品高清在线 | 精品日韩欧美一区二区在线播放 | 豆奶导航| 懂色中文一区二区在线播放 | 欧美与黑人午夜性猛交久久久 | 凸输偷窥xxxx自由免费视频 | 久久神马 | 日韩观看| 国产精品无码av网站 | 亚洲精品屋V一区二区 | 国产理论一区二区三区 |