没有合适的资源?快使用搜索试试~ 我知道了~
深入解析unsigned int 和 int
3 下载量 46 浏览量
2021-01-01
00:44:55
上传
评论 1
收藏 104KB PDF 举报
温馨提示
试读
2页
就如同int a;一样,int 也能被其它的修饰符修饰。除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种:1.signed—-有符号,可修饰char、int。Int是默认有符号的。2.unsigned—–无符号,修饰int 、char3.long——长型,修饰int 、double4.short——短型,修饰int 我们主要来看一下signed和unsigned与int之间的联系与区别。什么叫做有符号,什么叫做无符号这个问题其实很简单,比如:5和-5,5没有符号,-5有符号。简单吧。但是在计算机中的这种符号可不简单。我们分别来看一下:在说明有符号和无符号的区别之前
资源推荐
资源详情
资源评论
深入解析深入解析unsigned int 和和 int
就如同int a;一样,int 也能被其它的修饰符修饰。除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有
如下四种:
1.signed—-有符号,可修饰char、int。Int是默认有符号的。
2.unsigned—–无符号,修饰int 、char
3.long——长型,修饰int 、double
4.short——短型,修饰int
我们主要来看一下signed和unsigned与int之间的联系与区别。
什么叫做有符号,什么叫做无符号
这个问题其实很简单,比如:5和-5,5没有符号,-5有符号。简单吧。但是在计算机中的这种符号可不简单。我们分别来看一
下:
在说明有符号和无符号的区别之前,我们必须先知道溢出是怎么回事,因为有无符号的根本原因可以说就是因为数据出现了溢
出现象导致的。
溢出:溢出:
我们知道数据在计算机中以二进制存储,并且占据一定的空间,而这个空间属于计算机分配的空间。
计算机给int分配32位或者16位(不同电脑可能不同)的空间,既然空间有限,那么数值就会有限制,就会存在最大值与最小
值这一说,比如:假设int类型的分配16位,无符号类型的最大值为1111 1111 1111 1111(16个1),也就是65535,如果超
过了65535,这就叫做溢出,那该怎么办? 如果要输出65536,那将会输出个什么东西呢? 下面和大家一起看一下:
疑问:疑问:有的读者会问:65535这么小啊,我记得自己在输出比65535大好多的数也能够输出啊。
解答解答: 那就是有无符号的定义和你电脑编译器的原因了。64位的电脑和32的电脑可是不一样的哦。而且int占几个字节是与电脑
编译器有关的。不过现在大部分电脑int占4个字节,即32位,那么他的最大值可是32个1(二进制)左右的数量级,你实验过这
么大的数吗?
1.无符号整型无符号整型(unsigned int)
(1)我们都知道整型是4个字节(有些编译器不同,可能会是2个),即32位,无符号整型当然也为32位。
(2)既然是32位,无符号整型的取值是32个0~32个1,即:0~4294967295
(3) 我们举个例子:32位有点长,所以我们拿16位的unsigned short int 来举例。
short int 是16位的,无符号的范围是0~65535
就拿十进制的32767(以下的所有举例均拿这个数字来说事了)来说,它的二进制为:
0111 1111 1111 1111
对于无符号的整型32767来说,它的二进制的最高位称为数据位,即那个0就是数据位,数据位是要参与运算的,如果我们把0
改成1,即16个1,它的十进制就是65535(就是2的15次方+2的14次方…一直加到2的0次方),这是不同于有符号整型的。
(4) 为了进行理解(3)中的含义,做一个程序说明:
代码如下:
#include <stdio.h>
main()
{
unsigned short int a=32767,b=a+1;//定义短整型无符号
printf(“a=%ub=%u”,a,b);//以无符号输出
}
定义的时候a=32767,也就是0111 1111 1111 1111,输出的依然是32767,
a+1=32768, 二进制为1000 0000 0000 0000,输入依然为32768。
根据(3)中讲解的,无符号整型的二进制最高位为数据位,数据位为0为1都是按照正常来算的。
2.有符号整型((有符号整型((signed))int))(1)int类型默认是有符号的,所以类型默认是有符号的,所以int实际上是实际上是signed int ,我们通常省略,我们通常省略signed
(2)有符号整型也是32位。
(3)它的取值范围就与无符号整型不同了。它的范围是-2147483648~2147483647这个范围可以理解为无符号整型的一半变
成了负数。
32位有点长,所以我们拿16位的short int 来举例。
short int 是16位的,有符号的范围是-32768~32767
资源评论
weixin_38677648
- 粉丝: 5
- 资源: 886
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功