【C语言】一.数据的存储(整数浮点数在内存中的存储||大小端||原码反码补码)

0x00. 引言

相比其他的博客,本博客就主打一个简单干练,精华萃取。话不多说,直接开搞

0x01. 整数在内存中的存储

我们先来看一个例子

int a=10;
long long b=20;

这里定义了两个变量a和b,从右向左看10赋值给变量a,a的类型是int ,int占四个字节,表明在内存中我们给变量a开辟了四个字节大小的内存空间。同理b被声明为long long类型,在内存中给它分配了8个字节的空间。整数在内存中存的是10的二进制表示吗?

1.原码,反码,补码

整数在内存中存的是补码。不是直接的二进制表示。

原码:即为当前值的二进制表示

反码:符号位(第一位)不变,其他为按位取反(1变0,0变1)

补码:反码加一

值得一提的是正数的原码与补码相同

2.大端字节序/小端字节序

大端字节序(Big Endian)
高位字节数据存放在内存低地址处,低位字节数据存放在内存高地址处。
小端字节序(Little Endian)
高位字节数据存放在内存高地址处,低位数据存放在内存低地址处

举个例子:

例如:int a=1
假设内存地址从左往右由高到低
0x 00  00  00  01 这就是小端字节序,因为01存在了低地址处
而
0x 01  00  00  00 就是大端字节序,因为01存在了高地址处

如何判断一个机器的大小端呢?

int check_sys()
{int a = 1;return *(char*)&a;
}int main()
{int ret = check_sys();if (ret == 1)printf("小端");elseprintf("大端");return 0;
}

3.一道练习题

int main()
{char a[1000];int i;for ( i = 0; i < 1000; i++){a[i] = -1 - i;}printf("%d ", strlen(a));//   255,找到0之前的字符个数 -1到-128,127到0,总计128+127=255//signed char 取值范围0->127,(-128)->(-1)//unsigned char 取值范围0->255 10000000return 0;
}

0x02.浮点数在内存中的存储

背景

事实上直到20世纪80年代, 还是计算机厂商各自为战, 每家都在设计自己的浮点数存储规则, 彼此之间并不兼容. 直到1985年, IEEE754标准问世, 浮点数的存储问题才有了一个通用的工业标准.
IEEE754提供了四种精度规范, 其中最常用的是 单精度浮点型 和 双精度浮点型 , 但IEEE754并没有规定32位浮点数类型需要叫做 float, 或64位浮点数需要叫做 double. 它只是提供了一些关于如何存储不同精度浮点数的规范和标准. 不过一般情况下, 如果我们提到 float, 其实指的就是IEEE754标准中的32位单精度浮点数. 如果我们提到 double, 其实指的就是IEEE754标准中的64位双精度浮点数。

正文

推荐看这篇
知乎大佬的文章

0x03.总结

第一次用markdown编辑器,确实比之前的清晰很多,如果对你有帮助,点个赞再走吧

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

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

相关文章

创建了使用说明书之后,怎样才能监测用户的行为和反馈?

在当今数字化的时代&#xff0c;了解用户的行为和反馈对于产品和服务的质量提升至关重要。对于使用说明书而言&#xff0c;仅仅创建出来是远远不够的&#xff0c;还需要持续地监测用户的行为和反馈&#xff0c;以便不断优化和改进。那怎样才能有效地监测用户的行为和反馈呢&…

vue3打包后页面空白解决方法

vue3打包后页面空白解决方法 问题解决方法 问题 最近写一个小项目 没有打包的时候一切正常 技术栈用的vue3 vite 我用的是npm创建的项目 npm init vuelatest问题一 &#xff1a;打包后页面空白&#xff0c;什么都没有 问题二&#xff1a;刷新页面后找不到资源 把url的inde…

最佳解决方案:如何在网络爬虫中解决验证码

Captcha&#xff08;全自动区分计算机和人类的公开图灵测试&#xff09;是广泛应用的安全措施&#xff0c;用于区分合法的人类用户和自动化机器人。它通过呈现复杂的挑战&#xff0c;包括视觉上扭曲的文本、复杂的图像或复杂的拼图等方式&#xff0c;要求用户成功解决这些挑战以…

5、MAE:探索视觉预训练模型

目录 1、论文 2、背景与动机 3、回答的问题 4、创新与卖点 5、实现细节 模型框架 具体步骤 简单代码示例 6、一些资料 1、论文 Masked Autoencoders Are Scalable Vision Learnershttps://arxiv.org/pdf/2111.06377.pdf 2、背景与动机 在深度学习和计算机视觉的领域中…

Centos7,Python3.7.6安装模块Crypto,pycryptodome,ibm_db,requests,requests_pkcs12

Centos7,Python3.7.6安装模块Crypto&#xff0c;pycryptodome&#xff0c;ibm_db&#xff0c;requests,requests_pkcs12 Python版本&#xff1a;python3.7.6 对应的各种模块 前言&#xff1a;把python项目放到linux上运行时&#xff0c;提示缺少各种模块&#xff0c;安装命令…

【NetApp数据恢复】NetApp存储中Oracle数据库数据恢复案例

NetApp数据恢复环境&#xff1a; NetApp某型号存储&#xff0c;存储中有数十块SAS硬盘&#xff0c;该型号NetApp存储硬盘是扇区大小是520字节。存储中的lun都映射给小型机使用&#xff0c;存放Oracle数据库文件&#xff0c;采用ASM裸设备存储方式。 NetApp存储故障&#xff1a…

Linux tail命令详解和高级用法举例

目 录 一、概述 二、tail命令解释 1&#xff0e;命令格式; 2&#xff0e;功能 3&#xff0e;选项 4&#xff0e;选项的基本用法 &#xff08;1&#xff09; 显示行号 &#xff08;2&#xff09;忽略指定字符数 &#xff08;3&#xff09; 不显示文件名 三…

前端面试题集合一

Canvas是什么&#xff1f;怎样写Canvas&#xff1f; Canvas是HTML5的一个元素&#xff0c;它使用JavaScript在网页上绘制图形。Canvas是一个矩形区域。它的每一个像素都可以由HTML5语言来控制。使用Canvas绘制路径、框、圆、字符和添加图像有几种方法。 如果要在我们的HTML文…

ASP .net core微服务实战(杨中科)

背景&#xff1a; 主要是思考下&#xff0c;我们为什么要用微服务&#xff1f; 微服务我现在理解是&#xff1a;提供了我们一种模块化的手段&#xff0c;一个服务负责一种类型的业务&#xff0c;是一种面对复杂问题进行拆分的方式&#xff0c;但是也会引入一些中间件&#xf…

【期末考试】网络综合复习宝典

相关链接 网络复习思维导图&#xff08;HCIP&#xff09;https://www.edrawsoft.cn/viewer/public/s/038e2370897928 详述循环冗余校验CRC码https://blog.csdn.net/liht_1634/article/details/124328005?app_version6.2.6&codeapp_1562916241&csdn_share_tail%7B%22…

小魔推行业玩法:生活美容怎么做短视频矩阵?

如今每个实体老板都想让自己生意做的更好&#xff0c;那就需要有更多获取流量的方式&#xff0c;获得大量的同城曝光&#xff1b;在市场内卷的状况下&#xff0c;通过短视频来做门店引流无疑是绝佳的方式&#xff0c;让更多同城的用户知晓自己的门店&#xff0c;这个时候通过小…

12.8-1.8

2023.12.8 redis容器 docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf redis.conf不存在&#xff0c;需先在宿主机创建该目录下文件&#xff0c…

pytest框架

一、介绍 pytest是python的第三方单元测试框架,比自带unittest更简洁和高效 支持315种以上的插件,同时兼容unittest框架 在unittest框架迁移到pytest框架的时候不需要重写代码 二、环境搭建 首先使用pip安装pytest pip install pytest # 使用国内镜像站 pip install pytes…

跳坑日志之微信小程序开发——真机调试背景颜色不显示问题和页面无法下滑问题

如果你也遇到了在真机环境下background-color属性不显示而开发者工具中这个属性显示的情况&#xff0c;不妨去检查一下你的app.json 文件中,renderer 属性值是不是为skyline 。如果是的话&#xff0c;改成webview就行了。 同样的如果你的页面无法下滑&#xff0c;而且你在.jso…

FilterQuery过滤查询

ES中的查询操作分为两种&#xff1a;查询和过滤。查询即是之前提到的query查询&#xff0c;它默认会计算每个返回文档的得分&#xff0c;然后根据得分排序。而过滤只会筛选出符合条件的文档&#xff0c;并不计算得分&#xff0c;并且可以缓冲记录。所以我们在大范围筛选数据时&…

使用U盘作为系统的启动盘

1.我们使用到的工具ventoy-1.0.96.rar 下载资源 https://download.csdn.net/download/u011442726/88735129 2.怎么使用 ventoy软件的使用非常简单&#xff0c;直接解压后&#xff0c;把u盘插到电脑&#xff0c;然后点击exe这个文件即可。 然后点击之后&#xff0c;直接点击安…

ROS OpenCV 图像基本处理函数

在ROS中结合OpenCV使用时&#xff0c;cv::imread() 函数并非ROS本身的API&#xff0c;而是来自OpenCV库的函数&#xff0c;用于读取本地磁盘上的图像文件。 其用法如下&#xff1a; cv::Mat cv::imread(const string& filename, int flags IMREAD_COLOR); 参数说明&#…

设计模式之享元模式【结构型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

FridaHook(三)——AllSafe App wp

By ruanruan&#xff0c;2022/04/21 文章目录 1、不安全的日志记录2、硬编码3、pin绕过&#xff08;1&#xff09;反编译查看方法判断逻辑&#xff08;2&#xff09;hook方法A、Hook areEqual(Object,Object)B、Hook checkPin(a) &#xff08;3&#xff09;页面效果&#xff08…

芯课堂 | 一种带WIFI的智能多电机控制系统

现有技术中&#xff0c;每台智能家电基本均需配置一台电机及一个WiFi模组&#xff0c;每台智能家电的电机均通过对应的WiFi模组连接家庭无线路由器进行组网&#xff0c;从而实现网络连接。 但是&#xff0c;这种方式存在技术瓶颈。例如&#xff0c;当一个家庭中智能家电的数量…