跟着做的C++20教程-0008-实例7-无符号整数类型变量(unsigned int)

实例概要

  • 无符号整型变量

实例代码

#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的补码。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页