学习c语言第16天(数据的存储)

一、数据类型的介绍

c语言基本的内置类型

类型的意义:

1.使用这个类型开辟内存空间的大小(大小决定了使用范围)
2.如何看待内存空间的视角

1.类型的基本归类

整形家族

字符的本质是ASCII码值,是整形

int a等于 signed int a        char稍微特殊一些取决于编译器

有符号的数里最高位表示正负 ,无实际意义        00000000000000000000000000000000

浮点型家族

只要是表示小数就可以使用浮点型flaot 的精度低,存储的数值范围较小,double的精度高,存储的数据的范围更大。

构造类型(自定义类型)

数组类型 int arr[5];        该数组的类型是int [5]

结构体类型 struct

枚举类型enum

联合类型 union

指针类型

空类型

void 表示空类型(无类型)
通常应用于函数的返回类型、函数的参数、指针类型。

二、整形在内存中的存储

整数的2进制表示也有三种表示形式

1.正的整数,原码、反码、补码相同

2.负的整数,原码、反码、补码是需要计算的

原码:直接通过正负的形式写出的二进制序列就是原码

反码:原码的符号位不变,其他位按位取反得到的就是反码

补码:反码+1就是补码        内存中存放的是补码

1.存放补码的原因

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统
一处理;
同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的(源码=补码取反加1        补码=源码取反加1),不需要额外的硬件电路。

2.大小端介绍

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中:
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中

为什么有大小端

为什么会有大小端模式之分呢?因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8 bit。但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。
例如:一个16bit的 short型x,在内存中的地址为 0x0010,x的值为 0x1122,那么 0x11为高字节,0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010中,0x22放在高地址中,即 0x0011中。小端模式,刚好相反。我们常用的x86 结构是小端模式:而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

//判断小端大端
int main()
{int a = 1;                int*p=&a    原来的类型是int*if (*(char*)&a == 1)    访问一个字节把地址强制类型转换成char*{printf("小端");}elseprintf("大端");return 0;
}

3.练习

第一题

输出-1,-1,255

第二题

输出结果是4294967168

%u是无符号整数

第三题

输出结果为4294967168

整型提升看符号位

第四题

结果是-10

第五题

结果是死循环

-1放到unsigned int里是一个非常大的整数

第六题

 结果是225

arr[i]的类型是char

strlen求得是字符串长度,关注的是\0(就是数字0)之前出现多少字符

第七题

死循环

unsigned int取值范围是0~255

第八题

结果是大于

strlen返回值是size_t        就是unsigned int

三、浮点型在内存中的存储

1.常见浮点数

浮点数家族包括:float,double,long double

浮点数表示的范围:float.h

2.一个例子

结果是     说明整形和浮点型存储、存取方式不一样

      

解析:

3.浮点数存数规则

根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示成下面的形式
(-1)^S*M*2^E

(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。
M表示有效数字,大于等于1,小于2
2^E表示指数位。

(1)例子:

十进制的5.0,写成二进制是 101.0,相当于 1.01x2^2

那么,按照上面V的格式,可以得出S=0,M=1.01,E=2。

十进制的-5.0,写成二进制是-101.0,相当于-1.01x2^2。那么,S=1,M=1.01,E=2。

(2)规定

        存储

        取出

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

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

相关文章

新书速览|动手学PyTorch建模与应用:从深度学习到大模型

《动手学PyTorch建模与应用:从深度学习到大模型》 本书内容 《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。《动手学PyTorch建模与应用:从深度学习到大模型》共11章,第1章主要介绍深度学习的概念…

【检查 Android 设备上的热点(AP)状态】

在这篇教程中,我们将介绍如何使用 adb 命令检查 Android 设备上热点(AP)的状态。我们将通过命令行工具 ifconfig 来判断热点是否启用,并提供一个 Python 脚本示例来自动化这一过程。 前提条件 ADB 环境设置: 确保你已经在计算机上安装并配置好了 ADB (Android Debug Bridg…

【Go - redis client 单例模式】

以下是redis client单例,使用sync.Once保证无论单线程(协程)还是多线程(协程) 只执行一次。 示例 package mainimport ("context""fmt""sync""github.com/redis/go-redis/v9" )var (RedisClientSingleton *redis.Cliento…

深入浅出:Squid技术详解,让你的网络加速与安全无忧

在当今互联网高速发展的时代,网络的稳定性与安全性显得尤为重要。作为一款强大的代理服务器软件,Squid凭借其灵活的配置和强大的功能,成为了众多企业和个人用户的首选。本文将深入探讨Squid的核心技术、应用场景及优化技巧,帮助你…

Python --Pandas库基础方法(2)

文章目录 Pandas 变量类型的转换查看各列数据类型改变数据类型 重置索引删除行索引和切片seriesDataFrame取列按行列索引选择loc与iloc获取 isin()选择query()的使用排序用索引排序使用变量值排序 修改替换变量值对应数值的替换 数据分组基于拆分进行筛选 分组汇总引用自定义函…

Linux 中断的 CPU 亲和性

文章目录 1. 前言2. 背景3. 什么是中断的 CPU 亲和性3. IRQ 中断 默认的 CPU 亲和性4. 硬件架构 CPU 固有 IRQ 中断亲和性5. 中断芯片 各中断 CPU 亲和性 初始化5.1 GIC v2 芯片的 SPI 中断 CPU 亲和性 初始化5.1.1 软件层次: 中断 CPU 亲和性 初始化5.1.2 中断芯片层次: GIC v…

前端面试从基础到资深问题汇总

基础篇 前端基础知识问答-js篇 JavaScript是前端开发的核心语言之一,以下是一些关于JavaScript的基础知识问答: Q: 什么是JavaScript? A: JavaScript是一种高级的、解释型的编程语言,通常用于网页开发中,实现网页的交…

Spring-cloud Alibaba组件--Dubbo

远程调用技术 RestFul风格 基于HTTP协议实现,而HTTP是一种网络传输协议,基于TCP,规定了数据传输的格式。 RPC协议 Remote Produce Call 远程过程调用,类似的还有 RMI ( remote method invoke)。自定义数…

优思学院|抽样检验的概念和21种抽样方式

抽样检验的概念 根据事先制定的抽样方案,从一批产品中随机抽取一部分作为样品,以这部分样品的检验结果,对整批产品质量合格与否作出判定的活动过程,称为抽样检验。除了用于质量控制之外,抽样检验同样适用于在六西格玛…

AI工作流程设计的自动化优化:微软与斯坦福的新成果 - Trace

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

学习网络安全 为什么Linux首择Kali Linux? 以及如何正确的使用Kali Linux

1.什么是kali linux? Kali Linux是一款基于Debian的Linux发行版,主要用于网络安全测试和渗透测试。它由全球顶尖的安全专家和黑客社区维护开发,提供了丰富的工具和资源,用于测试安全性、漏洞利用和渗透测试。此外,Kal…

修复msvcp120.dll丢失的问题的几种简单方法,msvcp120.dll是什么

在使用电脑时,你可能会遭遇一个提示称“msvcp120.dll丢失”的错误信息。这个问题比较普遍,主要是因为你的系统中缺失了某个特定的动态链接库(DLL)文件。msvcp120.dll是由 Microsoft Visual C 可再发行包提供的关键文件&#xff0c…

一键切换阿里yum源(包括其他系统repo镜像查找方法)

一键切换阿里yum源 示例命令其他系统repo镜像GitHub文档 示例命令 # 备份旧源 mv CentOS-Base.repo CentOS-Base.repo.bak # 添加新源(阿里镜像源) wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo其他系统repo镜像 这里的示例是用…

create-vue项目的README中文版

使用方法 要使用 create-vue 创建一个新的 Vue 项目,只需在终端中运行以下命令: npm create vuelatest[!注意] (latest 或 legacy) 不能省略,否则 npm 可能会解析到缓存中过时版本的包。 或者,如果你需要支持 IE11,你…

链表篇-02.从尾到头打印链表(反转链表)

解题思路: 链表从尾到头打印链表, 我的思路是 用三个指针,第一个指针(pre)指向指向头节点的前一个位置,第二个指针(cur)指向头节点, 然后依次往后执行,第三个指针用于临时记录第二个指针的下一个位置。 代码详情: import java.…

2024年中职云计算实验室建设及云计算实训平台整体解决方案

随着信息技术的飞速发展,云计算作为新一代信息技术的核心,正逐步渗透到各行各业,成为推动数字化转型的重要力量。为了适应这一趋势,中职教育作为技能型人才培养的重要阵地,亟需加强云计算实验室建设与云计算实训平台的…

西门子s7协议

S7Comm(S7 Communication)是西门子专有的协议,是西门子S7通讯协议簇里的一种。 S7通信协议是西门子S7系列PLC内部集成的一种通信协议,是S7系列PLC的精髓所在。 它是一种运行在传输层之上的(会话层/表示层/应用层&…

速记Java八股文——并发编程篇

前言 分类汇总 20 常见的 Java集合 经典后端面试题,并对题目进行了精炼总结,旨在帮助大家高效记忆,在面试中游刃有余,不至于陷入词穷的窘境。 Java 并发编程 多线程怎么使用的? 继承 Thread 类。实现 Runnable 接口。…

STL 简介(标准模板库)

前言 通过对C的特性,类和对象的学习和C的内存管理对C基本上有了全面的认识,但是C的核心在于STL 一、STL简介 什么是STL C STL(Standard Template Library,标准模板库)是C编程语言中一个功能强大的模板库,…

【Linux】CentOS更换国内阿里云yum源(超详细)

目录 1. 前言2. 打开终端3. 确保虚拟机已经联网4. 备份现有yum配置文件5. 下载阿里云yum源6. 清理缓存7. 重新生成缓存8. 测试安装gcc 1. 前言 有些同学在安装完CentOS操作系统后,在系统内安装比如:gcc等软件的时候出现这种情况:&#xff08…