| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【C语言】整型数据在内存中的存储(详解) -> 正文阅读 |
|
[C++知识库]【C语言】整型数据在内存中的存储(详解) |
文章目录数据类型我们知道,C语言中有很多不同的数据类型 在cppreference.com网站上可以找到C语言中的不同类型【链接】 先来认识一个不那么常见的类型 布尔类型C99中引入了布尔类型 _Bool
代码的效果如下: 因为布尔类型和以1-0来判断正误的作用是相同的 所以这个类型我们一般不会使用 无符号数据的打印Unsigned无符号数用%u打印
我们知道,整型数据在内存中占用4个字节(32位),double类型是8个字节 不同数据占用的字节在之前的学习中,我们已经知道了如何使用这些不同的数据类型 但是你知道,数据在内存中是怎么存储的吗? 这篇博客将带你认识整型在内存中的存储 整型在内存中的存储先来认识一下整型家族都有谁吧! 整型家族
我们平时用的最频繁的int其实是signed int
在知道整型在内存中的存储方式之前 我们需要先认识一下三个好朋友**“原 反 补”** “原反补”三兄弟正整数:原反补码相同 负整数:
二进制要怎么写出来呢?下面以15为例(前面省略了24位) 每一个1都是2的权重 这就是二进制和十进制转换的方式 而15作为正数,原反补码都是这个二进制数
什么是符号位?每一个整型都有4个字节,由32个bit位组成 其中原码的第一位,就是该二进制的符号位 正数为0,负数为1
再举个-15的例子
为了进一步了解数据在内存中的存储方式,我们将15的补码转化为十六进制 每4个二进制比特位对应一个十六进制数,转换结果如下
可当我们在VS编译器-监视-内存窗口里面查看15数据的时候 展示的是以下的16进制形式 可以看到,内存中存储的十六进制,和我们计算出来的是反着的 这又是为什么呢? 大小端问题大端字节序存储: ? 当一个数据的低字节的数据存放在高地址处,高字节序的内容放在了低地址处,这种存储方式就是大端字节序存储 小端字节序存储: ? 当一个数据的低字节数据存放在低地址处,高字节序的内容放在了高地址处,这种存储方式就是小端字节序存储
而我们图中这种“反着放”的方式,就是小端字节序存储 而如果是以00 00 00 0f方式放入内存,则是大端字节序存储 负数示例
了解了大小端的机制之后,我们可以来写一个简单的函数 判断当前编译器是大端还是小端
这串代码的自定义函数部分可以进行优化
进一步优化,我们可以把(char*)&a直接进行解引用并返回他的值 这样就能跳过中间变量p
这里有两个问题需要注意: 不能直接对a进行强制类型转换,这种方式是错的 大小端是把数据放在内存之后才有的现象
为什么整型在内存中存放的是补码呢?
计算机中只有加法器,减法用加法来模拟 1-1→1+(-1) 如果用原码的计算:
补码:
它们的补码
其中1为符号位 结语到这里,整型在内存中存储的基本知识就已经讲完啦 如果对你有帮助,还请不要吝啬手里的赞👍! 能留下个评论就更好了 这对我真的很重要!!! |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:44:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |