栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

关于无符号数unsigned的理解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于无符号数unsigned的理解

在程序中,偶尔能看到 unsigned 的身影。网上找一圈下来,不外乎就是在说 unsigned 修饰的变量是无符号类型。所谓无符号类型就是整数。
这样的解释可以说是正确的,但是没有让人明白、了解内在本质。
关于unsigned就不得不提到计算机存储数据的方式,即二进制,而进制又是随着自己操作系统的位数来决定这个类型能存放多少。
在有+、-号出现时,他们都是有符号的整数。很多时候我们都说,+数是正数,非零数。而没有符号在前面的也是正数。而计算机中不这么认为,若是+80和80,他们两个必然是不同的数。因为采用的存储方式不一样了。
为了能表达两种类型的数的方式,所以有了反码、补码。
当最高位是用来表示符号位时,他是一个有符号类型的数,而当最高位不用来表示符号类的数,他就是一个正数。
unsigned 便是为了告诉机器,我这个修饰后,最高位是不用作表示有符号类型的数的。举例:假如是16位系统,那它是 2^16 - 1 范围。 即 0xFFFF; 若是最高位用作表示有符号数的,那么范围是 0x7FFF,最高位是不能算入其中的。
范围是多少,与当前计算机的CPU位数、以及编译器位数有关。但是普遍来说,最低都是从16位起。单片机虽然是8位,但是int类型也是占用了16位,因为它在单片机中占用了两个字节。2 × 8 个位。
通常情况下,16位及以下的 int 类型都是占用两个字节。但是到了32位中就是 4 个字节。即 4 × 8。总之,一般都会从16位起步。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980408.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号