物联网
您现在所在的位置:首页>企业动态>物联网

无符号数和有符号数的区别

编辑:学到牛牛IT培训    发布日期: 2023-08-24 08:57:32  


什么是有符号数?

有符号数是针对于二进制来讲的,最高位表示符号位,“0”代表正,“1”代表负,其余位代表数。首先要搞清楚最高位是哪一位,以char型为例,一个字节最高位在第7位,那int型的最高位则为第31位。下图中红色字体为最高位。

Char 类型:

1.png

Int类型:

2.png

什么是无符号数?

无符号数的表示范围是非负数,全部二进制数均代表数值,没有符号位,即第一个“0”或“1”不表示正负。无符号数和有符号数相对,无符号数用unsigned表示,如:unsigne char I = 0x85,这样,即使i的最高位为1,也会因为unsigned的修饰而成为一个无符号数。


无符号数和有符号数的区别

范围区别

无符号数中,所有的位都会用来表示大小,有符号数中最高位用来表示正负,所以,当为正值时,该数的大小就会变小。以一个字节的值为例:

无符号数:1111 1111 值:255 

有符号数:0111 1111 值127

同样一个字节,无符号数的最大值是255,而有符号数的最大值是127,这是因为有符号数的最高位被拿去当符号了,并且最高位的权位也是最高的,所以仅仅少一位,最大值会少一大半。

有符号数的长处在于,虽然它的最大值不占优势,但它可以用来表示负数,以一字节的值为例:

无符号数:0-255

有符号数:-128-0-127

同样是一个字节,无符号数的最小值是0,有符号数的最小值是-128,所以由此看来,二者表达的不同数值的个数都是256个,只是范围不相同而已。

看到这个表示范围,就又有一个新的问题了,有符号数表示的最小值是怎样计算出来的?

若最高位为1表示负数,而该负数的绝对值是多少呢?将每个二进制位(包含符号位)取反加1,得到一个二进制数,将该数看成是无符号数,其值就是上述负数的绝对值。

例如:二进制数10000000的最高位为1,所以它表示的是负数,是负的多少呢?我们将其八位全部取反,得到01111111,然后加1,得到10000000,将该数看作无符号数,值为128,故计算机中的10000000表示的是-128,最高位(即符号位)为1的8位有符号数有128个,故可表示128个负数;最高位为0的8位有符号数有128个,但全0的那个表示数0,所以总共只能表示127个正整数。


免费试学
课程好不好,不如实地听一听

封闭学习

2

1

联系我们

电话:028-61775817

邮箱:1572396657@qq.com

地址:成都市金牛区西城国际A座8楼

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    扫一扫,免费咨询

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    微信公众号

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

学一流技术,找高薪工作

物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

7-24小时服务热线:

028-61775817

版权声明 网站地图

蜀ICP备2021001672号

课程问题轻松问