无码人妻A片一区二区三区_18禁裸乳无遮挡啪啪无码免费_91精品亚?影视在线?看_人人妻人人爽人人澡AV_国产精品人妻一区二区三区四区_午夜免费影视

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 軟件研發 > 如何在C和C ++中操作位?

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

2020-07-23 14:58:38 | 來源:中培企業IT培訓網

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

  位表示

這是32位整數數字10的位表示形式:

00000000000000000000000000001010

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

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

有符號和無符號表示之間存在聯系。簽名號碼:

-x 等于一個無符號數2^n – x。

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

int a = -10;

unsigned int b = a;

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

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

/* 4294967286 */

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

  位操作

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

  通用位任務

unsigned int的二進制表示形式:

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;

}

將位設置在位置:

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;

}

  代表集

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

對于32位整數,集合為{0,1,2,…,31},子集為{1、3、4、8}。該集合的二進制表示形式是:00000000000000000000000100011010,十進制表示形式是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 ++編譯器提供以下用于計數位的功能:

?__builtin_clz(x):數字開頭的零個數字

?__builtin_ctz(x):數字結尾處的零數字

?__builtin_popcount(x):數字中的個數

?__builtin_parity(x):1的奇偶校驗(偶數或奇數)

通過上述介紹,如何在C和C ++中操作位的相信大家已經清楚了吧,想了解更多關于編程語言的信息,請繼續關注中培偉業。

標簽: C
主站蜘蛛池模板: 国产精品一区二区三区av | aⅴ在天堂线网在线观看 | av另类 | 青天衙门第一部 | www亚洲精品少妇裸乳一区二区 | 追你而来免费观看 | 在线精品免费观看一区 | 国产精品女同一区二区久久夜 | WWW国产精品内射老师 | 九九九全国免费 | 午夜亚洲AV永久无码精品 | 亚洲特级毛片 | 国产日产综合 | 中文字幕乱码一区av久久不卡 | 国产成人+综合亚洲+天堂 | 国产精品高潮呻吟av久久动 | 美女久久一区 | 狠狠躁夜夜躁AV网站中文字幕 | 欧美国产成人精品一区二区三区 | 情侣做性视频在线播放 | 国产高清视频在线观看一区二区 | 天天做日日干 | 无码一区二区三区老色鬼 | 免费国产成人高清在线观看不卡 | 亚洲男人的网站 | 中文字幕第6页 | 欧美阿v高清资源在线 | 国产免费一区二区三区视频天天爽 | 亚洲欧美一区二区三区情侣bbw | 国产露脸无套对白在线播放 | 日韩福利一区二区三区 | 天天摸天天做天天爽天天弄 | 久久精品久久精品久久39 | 99久热re在线精品99re8热视频 | 国产一区二区视频在线观看免费 | 日本国产亚洲 | 91草视频| 亚洲欧美国产高清 | 一级无码一区在线观看 | 在线理论片370看看 9a蜜桃久久久久久免费 | 啪啪tv网站免费入口 |