首页 > 其他分享 >有关整型数据类型的基本概念梳理

有关整型数据类型的基本概念梳理

时间:2022-08-24 16:47:24浏览次数:67  
标签:字节 int 数据类型 long 整型 sizeof 基本概念

我们都知道C语言中拥有非常丰富的整型数据类型,如字符型 char,短整型 short,整型 int......。它们每个所能表示的整数大小是不一样的,而其中也有一些复杂的转换关系,那么今天这篇博客就来梳理一下C语言中的五种整型数据类型。
首先要知道

计算机是通过晶体管的开关状态来记录数据的。它们通常8个编为一组,我们称之为字节。而晶体管有开关两种状态,一个字节有8个晶体管,因此一个字节可以拥有2的八次方个不同的状态。让每一种状态对应一个数值,这样一个字节可以表示256个不同数值。而在发明C语言的年代,计算机存储资源是非常珍贵而稀缺的。对一个字节就足够存储的情况,何必用两个字节来存储呢?

由此这就是多种整型数据类型的由来。

具体的每种类型的大小我们可以通过 sizeof 这个关键词来测量,代码如下:

#include <stdio.h>
int main()
{
printf("%zu",sizeof(char));
printf("%zu",sizeof(short));
printf("%zu",sizeof(int));
printf("%zu",sizeof(long));
printf("%zu",sizeof(long long));
return 0;
}

因为我们并不知道sizeof所返回的结果是什么,所以我们使用了 %zu 这个占位符。我将上述代码在Visual Studio 2022 中运行得到结果分别为1,2,4,4,8个字节。
其中 intlong 都占用4个字节让我很疑惑,经搜索为什么 longint 大小相等这样是可以的,C语言标准规定高级别的类型取值范围不得小于低级别的类型,但是它们可以是一致的。

至此我们清楚了五种C语言规定的整型数据类型及其所占字节大小,那么它们所能表示的大小范围用人话来描述究竟是什么样的呢?

前面我们提到每个字节由8个晶体管组成,每个晶体管状态我们称之为位。那么char,short,int,long,long long分别占用了8,16,32,32,64位。
经过推演学习资料显示,如果不考虑负数,那么整型数据类型可以表达的数据范围是:假设,位数为n,则数据范围从【0】开始,到【2的n次方-1】的数值范围。而为什么有一个“-1”?那是因为我们不能在实际情况中忽略附属的存在,所以我们需要拿出一个位来作为符号位,用来表示这个数据是正数还是负数。
于是我们发现次方数比位数少一,是因为最高位被用去做符号位了。
那么一定要有这么一个少一存在吗?其实并不然。如果我们确定我们不会用到负数,那么可以使用 unsigned 关键词,这样表明这个数据类型,是不带有符号位的。既然不带有符号位了,那么原本留给符号位的那一个二进制位,就可以用来表示数值。

这就是我对整型数据类型基本概念的一些浅薄理解,而关于二进制表示法,数值的补码表示法等内容我目前还不能很好的明白,还有待继续学习!!!

标签:字节,int,数据类型,long,整型,sizeof,基本概念
From: https://www.cnblogs.com/Frolsank/p/16620644.html

相关文章

  • Python自学教程4-数据类型学什么
    Hi,我是九柄,全网同号,今天我们说说Python的数据类型。python数据类型有什么特点每一门编程语言都要学数据类型的,每种类型的操作会稍微有一点区别。Python是一门非常灵活的......
  • java数据类型转换问题
    我们知道java中的各个数据类型的取值范围不同,可以理解成容量大小,而针对容量大小可以对他们进行一个由低到高的排序,也就是优先级。优先级低-----------------------------......
  • python02-数据类型
    身份验证is;type(name)isint返回值为true或false、isnot;type(name)isnotint返回值为true或false三元运算d=aifa>15elsebd=值1if条件Ael......
  • MySQL学习(2)---MySQL数据类型
    ps:此随笔基于mysql5.7.*版本。补充:UNSIGNED:所有整数类型都可以有一个可选(非标准)UNSIGNED属性。无符号类型可用于在列中仅允许非负数存在,或者当开发者需要该列的较大......
  • python基础——变量 数据类型 运算符 格式化 if语句复习
    拓展+复习:1.input(’'你要输入的内容')--输入2.print('你要输入的内容')--输出/打印3.注释多行,单行多行注释”“”“”“''''''#ctrl+/4.变量的定义定义变量的......
  • 数据类型扩展
    publicclassDemo03{publicstaticvoidmain(String[]args){//整数拓展;进制二进制0b十进制八进制0十六进制0xinti=10;int......
  • 学习历程--八大数据类型
    publicclassDemo02{publicstaticvoidmain(String[]args){//八大数据类型//整数intnum=10;//最常用bytenum2=20;......
  • 这些网络协议的基本概念你可要知道
    为什么需要网络协议在没有网络协议的阶段,公司有自己的标准,而不同公司、网页之间请求响应不能互通,要适应繁多不同的规范,非常的混乱。当制定了统一的规范之后,每个公司、产......
  • 第四章 7 数据类型-综合 练习题
    第四章7数据类型-综合练习题[基础知识]1在Python中__________表示空类型()[]{}None2列表、元组、字符串是Python的_________(有序?无序)序列有序3Python内置......
  • 第四章 5 数据类型-集合 练习题
    第四章5数据类型-集合练习题"""一.关系运算有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合pythons={'jason','egon......