无符号整数


无符号整数

文章插图
无符号整数【无符号整数】计算机里的数是用二进制表示的,最左边的这一位一般用来表示这个数是正数还是负数,这样的话这个数就是有符号整数 。如果最左边这一位不用来表示正负,而是和后面的连在一起表示整数,那幺就不能区分这个数是正还是负,就只能是正数,这就是无符号整数 。
基本介绍中文名:无符号整数
外文名:unsigned integer
常用于:表示地址、索引等
属性:正整数
简介计算机中的整数分为两类:不带符号位的整数(unsigned integer,也称为无符号整数),此类整数一定是正整数;带符号位的整数(signed integer),此类整数可以表示正整数,又可以表示负整数 。无符号整数常用于表示地址、索引等正整数,它们可以是8位、16位、32位、64位甚至更多 。8个二进制表示的正整数其取值範围是0~255(
无符号整数

文章插图
-1),16位二进制位表示的正整数其取值範围是0~65535(
无符号整数

文章插图
-1),32位二进制位表示的正整数其取值範围是0~
无符号整数

文章插图
-1 。有符号和无符号的差别int是有符号的,unsigned是无符号的 。它们所占的位元组数其实是一样的,但是有符号的需要安排一个位置来表达我这个数值的符号,因此说它能表示的绝对值就要比无符号的少一半 。举个例子,我们有一个1个位元组的整数(虽然这种类型不存在),那幺无符号的就是这样:00000000~11111111 这个就是无符号的範围 。一个位元组是8位,有符号的数,因为第一个位要用来表示符号,那幺就只剩下7个位置可以用来表示数了0000000~1111111因为有符号,所以还可以表示範围:-1111 111 ~ +1111 111 。定义c语言无符号整数整型变数的分类: 基本整型:int;短整型:short int ;长整型:long int 对以上三类加上修饰符unsigned以指定是“无符号数” 。如果加上修饰符signed,则指定的是“有符号数”,如果既不指定为signed也不指定是unsigned,则隐含为有符号(signed) 。举例如下:请问以下代码的输出?unsigned int a=1,int b=-2;int c=-2;cout<<b<<endl;if(a+c>0)cout<<a+b<<endl;运行结果:42949672944294967295Press any key to continue首先,程式的第一行,变数b和a一样,都是无符号整型,这是一个陷阱 。其次,在32位系统中,int的範围是-2147483648~+2147483647,而unsigned int的範围是0~4294967295 。负数在无符号整型中用补码表示,所以b是4294967294 。第三,int默认为signed int,它与unsigned int运算时,结果被转换为unsigned int,所以a是4294967295 。