跟著做的C++20教程-0008-例項7-無符號整數型別變數(unsigned int)
阿新 • • 發佈:2021-01-26
技術標籤:跟著做的C++20教程c++
目錄
例項概要
- 無符號整型變數
例項程式碼
#include <bitset>
#include <iostream>
int main(int argc, char** argv)
{
//定義無符號整形變數
unsigned int a = 99999;
std::cout << a << std::endl;
a = -1;//將負數賦值給無符號整型變數
int b = -1; //有符號整型初始化為-1
std::cout << "無符號整型-1的十進位制" << a << std::endl;
std::cout << "無符號整型-1的二進位制" << std::bitset<sizeof(a)*8>(a) << std::endl;
std::cout << "有符號整型-1的十進位制" << b << std::endl;
std::cout << "有符號整型-1的二進位制" << std::bitset<sizeof(b) * 8>(b) << std::endl;
return 0;
}
執行結果
99999
無符號整型-1的十進位制4294967295
無符號整型-1的二進位制11111111111111111111111111111111
有符號整型-1的十進位制-1
有符號整型-1的二進位制11111111111111111111111111111111
例項解釋
無符號整型變數
整數分為正數和負數,通過+
,-
兩個符號來區分。在計算機二進位制中通過最高位二進位制的值代表正負號,1代表負數,0代表正數。如01是正數,11是負數。無符號數的意思就是二進位制數的最高位不再表示正負號,而是表示數值,這意味著無符號整型變數只能表示0和正整數。
定義無符號整型變數
定義無符號整型變數,只需要給整型變數加上unsigned
修飾即可,這個修飾放在int
的前或後都可以。可以寫成unsigned int
也可以寫成int unsigned
。
有符號和無符號的記憶體值
例項中有兩個變數,分別是有符號的b
和無符號的a
。按照正常理解a
是不可以為負數的,但是我們將-1賦值給a時並沒有出現錯誤。這是因為程式並不關心變數到底是有符號還是無符號,因此我們在使用變數時需要自己在確保符號的正確性。
a
和b
的值在記憶體中都被儲存成二進位制11111111111111111111111111111111
。但在輸出時a
得到了4294967295
,b
得到了-1
。這是因為a
時無符號數,因此最高位的1
被認為是數值,因此a
的值是
2
32
2^{32}
232等於4294967295
。b
是有符號數,因此最高位的1
被認為是負號,而11111111111111111111111111111111
是-1
的補碼。