关于C语言中有符号型signed和无符号型unsigned的区别

实在不明白教材说什么,这两个东东空间有什么不同,不要说得太高深,我只是初学者.... 实在不明白教材说什么,这两个东东空间有什么不同,不要说得太高深,我只是初学者. 展开
 我来答
小星星教育知识分享
高粉答主

2019-12-07 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67129

向TA提问 私信TA
展开全部

1、表达数值范围的不同

signed表示有符号的,其第一个位表示正负,其余位表示大小,例如signedint大小区间为-128~127。

unsigned表示无符号的,所有位都为大小,没有正负,例如unsignedint大小区间为0~127。

2、类型的不同

signed类型的整数,只用了去除最高位,剩下的15位来进行编码的,而最高位只是用来做标记(sign),标记整数的正负,0表示正,1表示负。所以对于signed的整数,的存储范围是(-2^15to2^15-1),也就是-32768到+32767的整数。

而对于unsigned的整数,其16位全部用来编码,存储范围便是(0to2^16-1),即0到65535的非负整数。所以呢你可以声明inta=1,或者inta=-1,但是不可以声明unsigneda=-1。但是需要提到的一点是,不管整数的类型是signed还是unsigned,都用了16位来存储,也就是说16位全部用来存储数据。

3、表达的数值不同

signed类型的整数只用了除去最高位剩余的15为进行编码,最高位用来标记整数的正负,0表示正,1表示负。所以对signed的整数存储范围为(-2^15~2^15-1)。

unsigned类型的整数其16为全部用来编码,则unsigned的整数存储范围为(0~2^16-1)。

仁昌爱娱乐
高粉答主

2019-11-21 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:459748

向TA提问 私信TA
展开全部

C语言中有符号型signed和无符号型unsigned的区别为:符号位不同、正数范围不同、转换不同。

一、符号位不同

1、有符号型signed:有符号型signed由于有符号位,故能表示负数。

2、无符号型unsigned:无符号型unsigned由于省去了符号位,故不能表示负数。

二、正数范围不同

1、有符号型signed:表示同一数字类型,有符号型signed由于有符号位,正数范围比无符号型unsigned小。

2、无符号型unsigned:表示同一数字类型,无符号型unsigned由于省去了符号位,正数范围比无符号型unsigned大。

三、转换不同

1、有符号型signed:正数有符号型signed能转换为无符号型unsigned,负数有符号型signed不能转换为无符号型unsigned。

2、无符号型unsigned:无符号型unsigned能转换为有符号型unsigned。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱教育爱学习
高粉答主

2019-11-21 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112712

向TA提问 私信TA
展开全部

1、数值占位不同

unsignedint是从0到2的32次方减1,而signedint是从负2的31次方到正2的31次方减1。在计算机里,整型变量占用4字节,也就是32位的存储空间。对于有符号数来说,正负号要单独占一位。所以除去符号位以外,数的绝对值就占31位。

2、范围的不同

无符号整型和有符号整型的区别在于无符号类型可以存放的正数范围比有符号整型中的范围大一倍,因为有符号类型将最高位储存符号,而无符号类型全都储存数字。

在16位系统中一个int能存储数据的范围是-32768~32767,unsigned能存储的数据范围是0~65535。

3、表示的绝对值不同

它们所占的字节数其实是一样的,但是有符号的需要安排一个位置来表达我这个数值的符号,因此说它能表示的绝对值就要比无符号的少一半。

举个例子:有一个1个1字节的整数,那么无符号的就是:“00000000~11111111”这个就是无符号的范围。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wendellgates
2010-07-10 · 超过22用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:71.8万
展开全部
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同,但由于省去了符号,故不能表示负数。
例如:有符号整形变量最大是32767,无符号整形变量最大是65535。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wwylele
推荐于2017-11-28 · TA获得超过2523个赞
知道小有建树答主
回答量:1037
采纳率:0%
帮助的人:1076万
展开全部
就拿short型来说吧
signed short型的表示范围是-32768~32767中的整数
而unsigned short型的表示范围是0~65535中的整数
也就是说,signed型能够表示负数,而unsigned则不能,但signed表示的最大数总要比unsigned小,其原因是因为在内存中signed需要用1位(short型共有16位)来存储正负号,unsigned型没有正负号,所以这1位也就节省了下来和其它位一起表示整数了。
int型、long型同理
如果要运算的数存在负数的可能,那么一定要用signed。如果不存在负数,且要求存储的数据范围尽可能大,则一般用unsigned型。
如果声明变量时不指明signed还是unsigned,则默认为signed
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式