1. 程式人生 > 其它 >跟著做的C++20教程-0008-例項7-無符號整數型別變數(unsigned int)

跟著做的C++20教程-0008-例項7-無符號整數型別變數(unsigned int)

技術標籤:跟著做的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時並沒有出現錯誤。這是因為程式並不關心變數到底是有符號還是無符號,因此我們在使用變數時需要自己在確保符號的正確性
ab的值在記憶體中都被儲存成二進位制11111111111111111111111111111111。但在輸出時a得到了4294967295,b得到了-1。這是因為a時無符號數,因此最高位的1被認為是數值,因此a的值是 2 32 2^{32} 232等於4294967295b是有符號數,因此最高位的1被認為是負號,而11111111111111111111111111111111-1的補碼。