C语言从入门到精通第2天(深度解析C语言数据类型及取值范围)

news2025/1/23 2:21:39

C语言基本数据类型及取值范围

  • 数据存储概述
  • 基本数据类型
  • 整型数的二进制表示
  • 浮点型数的二进制表示
  • 取值范围

数据存储概述

C语言的变量有着不同的数据类型,每种数据类型的取值空间都是不同的,因此,不同数据类型的变量,其取值空间也不同。在C语言程序中,各种类型的变量大多数是以十进制的形式来描述的,但实际上这些 变量在计算机中是以二进制的形式进行存储的,C语言允许对二进制直接进行位操作来完成特殊的要求。

C语言中的一位 (bit,又名“比特”,简写b) 能存储一个二进制数字(0或者1),而一字节 (Byte,简写B) 能存储8位(bit)。

数据存储是以“字节”(Byte)为单位,而数据传输大多是以"比特"(bit)为单位。在计算机中,一串数码作为一个整体来处理或运算的称为字。字通常分为若干个字节,在存储器中,通常每个单元存储一个字,因此每个字都可以寻址的。字的长度用位数来表示(字长指计算机一次可以处理的二进制数字的数目)。如32位,64位的操作系统,字长是衡量计算机性能的一个重要因素。

信息存储量是度量存储器存放程序和数据的数量,位存放一位二进制数,即0或1,为最小的存储单元。8个二进制为一个字节单位,一个英文字母(部分大小写)和英文标点占一个字节的空间(8bit),一个中文汉字和中文标点占两个字节的空间(16bit)。

计算机存储单位之间的关系如下

1 字节 ( B y t e ) = 8 位 ( b i t ) 1字节(Byte) = 8位(bit) 1字节(Byte)=8(bit)
1 K B ( 千字节 ) = 1024 B 1KB(千字节) = 1024B 1KB(千字节)=1024B
1 M B ( 兆字节 ) = 1024 K B 1MB (兆字节)= 1024KB 1MB(兆字节)=1024KB
1 G B ( 千兆字节 ) = 1024 M B 1GB(千兆字节) = 1024MB 1GB(千兆字节)=1024MB
1 T B ( 万亿字节 ) = 1024 G B 1TB(万亿字节) = 1024GB 1TB(万亿字节)=1024GB
1 P B ( 千万亿字节 ) = 1024 T B 1PB(千万亿字节) = 1024TB 1PB(千万亿字节)=1024TB
1 E B ( 百亿亿字节 ) = 1024 P B 1EB(百亿亿字节) = 1024PB 1EB(百亿亿字节)=1024PB
1 Z B ( 十万亿亿字节 ) = 1024 E B 1ZB(十万亿亿字节) = 1024EB 1ZB(十万亿亿字节)=1024EB
1 Y B ( 一亿亿亿字节 ) = 1024 Z B 1YB(一亿亿亿字节) = 1024ZB 1YB(一亿亿亿字节)=1024ZB
1 B B ( 千亿亿亿字节 ) = 1024 Y B 1BB(千亿亿亿字节) = 1024YB 1BB(千亿亿亿字节)=1024YB

基本数据类型

程序语言一般都会提供几种不同的数据类型,以满足程序设计的需要。
以下为几种基本的数据类型:

1)字符型:用char表示
2)整数型:用int表示
3)单精度实数型:用float表示
4)双精度实数型:用double表示
5)空类型:用void表示

整型数的二进制表示

整型数又分为无符号和有符号两种,有符号的整型数既可以是正数,也可以是负数,正负号由字节的最高位来表示,0表示正数,1表示负数。如下:

1)有符号的二进制整型数
10110100,他的最高位为符号位,因此, ( 10110100 ) 2 (10110100)_2 (10110100)2的十进制数为 − ( 2 5 + 2 4 + 2 2 ) = − 52 -(2^5+2^4+2^2) = -52 (25+24+22)=52。而 ( 00110100 ) 2 (00110100)_2 (00110100)2的十进制数为 2 5 + 2 4 + 2 2 = 52 2^5+2^4+2^2 = 52 25+24+22=52
需要说明的是,为了不浪费计算机的存储空间,对于“正零”和“负零”有不同的处理,对于“正零”(00000000),代表0,对于“负零”(10000000),代表-128。
2)无符号的二进制整型数
最高位的0或1不在代表符号位,而代表具体的数值。例如, ( 10110100 ) 2 (10110100)_2 (10110100)2,它的十进制数为 ( 2 7 + 2 5 + 2 4 + 2 2 ) = 180 (2^7+2^5+2^4+2^2) = 180 (27+25+24+22)=180

浮点型数的二进制表示

浮点数在计算机中的表示可根据系统分配的字节数不同而分成单精度浮点数和双精度浮点数,通常计算机会分配4个字节给单精度浮点数,分配8个字节给双精度浮点数。计算机在存储浮点数的时候,要将十进制浮点数转化成二进制来表示。转化的方法是先将浮点数转化为整数部分和纯小数部分,再将整数部分和纯小数部分分别转化成二进制。

1)整数部分采用除2取余,直到商为零为止,最先得到的余数为最高位,最后得到的整数位为最低位。例如,十进制数56,采用除2取余的方法可得到其二进制的表示为: 5 6 10 = ( 111000 ) 2 56_{10} = (111000)_2 5610=(111000)2

在这里插入图片描述

2)小数部分采用乘2取整,直到余下的小数为0或者满足精度要求为止,最先得到的整数位最高位,最后得到的整数为最低位。例如:十进制0.432,采用乘以2取余的方法可得到其二进制的表示为: ( 0.432 ) 10 = ( 0.011 ) 2 (0.432)_{10} = (0.011)_2 (0.432)10=(0.011)2

在这里插入图片描述

于是可以得到浮点数4.625转换成二进制数为: ( 56.432 ) 10 = 111000.01 1 2 (56.432)_{10} = 111000.011_{2} (56.432)10=111000.0112

浮点数的存储遵循的是IEEE754标准,任意一个二进制浮点数可以表示成下面的形式:

在这里插入图片描述

取值范围

整型(int) 数据类型还可以与下面4种修饰符搭配来描述数据的长度及取值范围:

1)signed(有符号)
2)unsigned(无符号)
3)long(长型)
4)short(短型)

字符型(char)数据类型只能使用singned(有符号)或unsigned(无符号)进行修饰。

  1. 1字节
    字符型:【char】 取值范围为ASCII字符
    无符号字符型:【unsingned char】 取值范围为 0~255
    有符号字符型:【signed char】 取值范围为 -128~127
  2. 2字节
    整型:【int】 取值范围为 -32768~32767
    有符号整型:【signed int】 取值范围为 -32768~32767
    无符号整型:【unsigned int】取值范围为 0~65535
    短整型:【short int】取值范围为 -32768~32767
    有符号的短整型:取值范围为【singned short int】-32768~32767
    无符号的短整型:取值范围为【unsinged short int】0~65535
  3. 4字节
    长整型:【long int】取值范围为 -2147483648~2147483647
    有符号的长整型:【signed long int】 取值范围为 -2147483648~2147483647
    无符号的长整型:【unsinged long int】取值范围为0~4294967295
    单精度实数型:【float】取值范围为 约 ± 3.4 × 1 0 ± 38 \pm 3.4 \times10^{\pm38} ±3.4×10±38
    双精度实数型:【double】取值范围为约 ± 1.7 × 1 0 ± 308 \pm 1.7 \times 10^{\pm308} ±1.7×10±308

上面所示的数据类型和字节长度是适合C语言的编译环境所需要遵循的标准,不同的编译系统会对数据类型和字节长度的规定还会有些扩充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/414009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用注解和反射解决代码冗余问题(改进版)

在优化代码的时候发现,传参存在着高度冗余,如果后面需要改参数,很不方便。 String pam1 "id" appKey "&sign" sign "&method" method "&access_token" token "&times…

光隔离器的工作原理及其应用

光隔离器也称为光隔离器或光耦合器,它是一种通过使用光将电信号或电压从一个电路传输到另一个电路的装置,同时它将两个电路彼此隔离。它可以通过隔离过压信号来防止高电压或快速变化的电压损坏组件。光隔离器可以承受高达10KV的输入至输出电压和高达10KV…

html+css+JavaScript+json+servlet的社区系统(手把手教学)

目录 课前导读: 一、系统前期准备 二、前端代码的编写 三、登陆页面简介 四、注册页面 五、社区列表页 六、社区详情页 七、社区发帖页 八、注销 九、访问链接 登陆页面http://175.178.20.77:8080/java106_blog_system/login.html 总结: 课前…

HTML5 <embed> 标签、HTML5 <figcaption> 标签

HTML5 <embed> 标签 实例 被嵌入的 flash 动画片&#xff1a; <embed src"helloworld.swf">尝试一下 浏览器支持 注意: 大多数现代浏览器已经弃用并取消了对浏览器插件的支持&#xff0c;所以如果您希望您的网站可以在普通用户的浏览器上运行&#xf…

【SpringCloud系列】开发环境下重写Loadbalancer实现自定义负载均衡

前言 spring-cloud-starter-netflix-ribbon已经不再更新了&#xff0c;最新版本是2.2.10.RELEASE&#xff0c;最后更新时间是2021年11月18日&#xff0c;详细信息可以看maven官方仓库&#xff1a;https://search.maven.org/artifact/org.springframework.cloud/spring-cloud-st…

【计算机图形学】裁剪算法(逐边裁剪法 Weiler-Atherton裁剪法)

一 实验目的 编写直线段、多边形裁剪算法熟悉逐边裁剪法、Weiler-Atherton裁剪法的使用 4&#xff1a;用逐边裁剪法实现多边形裁剪&#xff08;代码最上方功能区注明是否处理退化边&#xff09; 无退化实验结果如下图所示&#xff1a; 图形初始化&#xff1a;&#xff08;红色…

GaussDB工作级开发者认证—第五章GaussDB数据库操作与管理

一、数据库对象基本操作 查询数据库&#xff1a; postgres# \l --使用元命令查看数据库 postgres# select * from pg_database; --通过系统表查看数据库 表注意事项: 只有表的所有者有权限执行ALTER TABLE命令&#xff0c;系统管理员默认拥有此权限 不能修改分区表的tables…

creator-assetbundle分包

title: creator-assetbundle分包 categories: Cocos2dx tags: [creator, 分包, assetbundle] date: 2023-04-10 15:55:22 comments: false mathjax: true toc: true creator-assetbundle分包 前篇 Asset Bundle 介绍 - https://docs.cocos.com/creator/manual/zh/asset/bundle…

国家出手管人工智能AI了

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 全球都在封杀AI&#xff0c;国家也出手了&#xff0c;人工智能AI的强监管来了!这次反应速度算是很快了。国家出手&#xff0c;AI必须管。 国家网信办拟针对生成式人工智能服务出台管理办法&#…

【万象奥科】RZ/G2UL网关内存压力测试

测试目的 内存压力测试的目的是测试系统内存的稳定性和可靠性&#xff0c;以便确定系统是否能够在各种负载情况下正常运行。其主要目的有&#xff1a; 测试内存的正确性&#xff1a;通过模拟各种内存负载情况&#xff0c;例如写入随机数据、重复写入相同数据、使用指定的模式…

原型模式解读

目录 模式引进问题 原型模式 原型模式原理结构图-uml 类图 原型模式解决克隆羊问题的应用实例 深拷贝和浅拷贝 浅拷贝的介绍 深拷贝基本介绍 重写 clone 方法来实现深拷贝 通过对象的序列化实现实现深拷贝&#xff08;推荐&#xff09; 原型模式的注意事项和细节 模式…

阿里云linux云服务器 安装指定版本node.js

我们在实例管理中找到自己的服务器 然后点击右侧的 远程连接 接着点击理解登录 进入命令窗口 我们在这上面输入 curl -h阿里云的服务器都还是最好会有 curl的 然后 我们输入 sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash下把nv…

带头部表头和侧边表头样式的布局

原型设计的页面中的表格除了头部还有左侧侧边是表头的一个表格&#xff0c;查阅组件文档&#xff0c;发现表格table没有两个表头的布局。 思路&#xff1a; 1、使用div自己布局 2、使用表格table&#xff0c;修改其第一列样式背景&#xff0c;展示除了的样子看着像是有多个表头…

突发!ChatGPT疯了!

‍数据智能产业创新服务媒体——聚焦数智 改变商业今天&#xff0c;笔者正常登录ChatGPT&#xff0c;试图调戏一下他。但是&#xff0c;突然震惊的发现&#xff0c;ChatGPT居然疯了。之所以说他是疯了&#xff0c;而不是崩溃了&#xff0c;是因为他还能回复我&#xff0c;但回…

【计算机网络】1、概念、TCP | UDP | 本地 socket 编程

文章目录一、网络基本概念1.1 端口&#xff08;port&#xff09;1.2 IP 地址 网络地址&#xff08;network&#xff09;和 主机&#xff08;host&#xff09;1.3 子网&#xff08;subnet&#xff09;1.4 子网掩码&#xff08;netmask&#xff09;1.5 保留网段1.6 CIDR 表述形式…

【计算机网络复习】第三章 传输层 3

拥塞 网络边缘主机发送到网络中的负载超出了网络的承载能力&#xff0c;即导致拥塞 u 网络拥塞的特征 时延增大 — 由于在路由器缓存中排队而导致 数据包丢失 — 由于路由器的缓存溢出而导致 u 随着网络负载的增加 传输时延增大 吞吐量下降 拥塞控制&#…

ptuning v2 的 chatglm垂直领域训练记录

thunlp chatglm 6B是一款基于海量高质量中英文语料训练的面向文本对话场景的语言模型。 THUDM/ChatGLM-6B: ChatGLM-6B&#xff1a;开源双语对话语言模型 | An Open Bilingual Dialogue Language Model (github.com) 国内的一位大佬把chatglm ptuning 的训练改成了多层多卡并…

Spring 事务

目录 一、事务简介 二、在Spring中实现事务 编程式事务 声明式事务 三、事务的传播机制 一、事务简介 事务&#xff1a;就是将一组操作封装成为一个整体执行单元&#xff0c;要么全部执行&#xff0c;要么都不执行。 假如事务执行了一半发生了错误就会对已经执行的部分进…

Linux嵌入式学习之Ubuntu入门(三)用户、用户组及文件权限

系列文章目录 一、Linux嵌入式学习之Ubuntu入门&#xff08;一&#xff09;基本命令、软件安装及文件结构 二、Linux嵌入式学习之Ubuntu入门&#xff08;二&#xff09;磁盘文件介绍及分区、格式化等 文章目录系列文章目录用户与用户组创建用户和用户组图形化创建命令创建文件…

【人工智能】— 逻辑Agent、一般逻辑、Entailment 蕴涵、命题逻辑、前向链接、反向链接、Resolution归结

【人工智能】— 逻辑Agent、逻辑智能体Knowledge bases一个简单的基于知识的智能体一般逻辑Entailment 蕴涵Models模型蕴涵与推理命题逻辑逻辑连接词枚举推理有效性可满足性推导和证明霍恩子句Forward chaining 前向链接Proof of completeness&#xff08;完备性&#xff09;Ba…