| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 数据的储存1 -> 正文阅读 |
|
[C++知识库]数据的储存1 |
上一篇文章通过讲解一些简单的数据储存,让大家了解到编译器中debug和release的差距。这篇文章先来进行个总结。 debug一般是程序员写代码时使用的,方便程序员的修改。 release版本基本上用于发行,它用强大的优化极大的提高了代码的执行效率和内存管理。 这篇文章就来聊一下整形 也就是int,char型在计算机内存中的存储方式
按F10进入调试窗口 调试中找到窗口,点击内存,监视变量a在计算机内部的储存 ?在地址中输入&a,按enter即可观察到变量a的地址,将右边的列调整为4,借此观察变量a在计算机的储存方式 ?数据在计算机内是以二进制的形式存储的,对于整数来说,在计算机存储中有三种表示形式。 分别为之前文章提到的:原码,反码,补码。 这里提供一下之前写的文章:操作符详解 正整数的原码,反码,补码相同。 这里来聊一下负数,计算机内部储存是以补码来及逆行存储的 ?这边以a=-10为例,一个int所占计算机为4个字节,也就是32个bit位,这里我先写一下-10的原码,然后再来解释 10000000000000000000000000001010 这段原码的第一位是符号位,当整数为正时,符号位为0,整数为负时,符号位为1。之后可通过计算器算出10的二进制序列 ?为1010,所以最后思维为1010 反码就是符号位不变,其他位按位取反也就是11111111111111111111111111110101——反码 反码+1即为补码,所以10的补码为11111111111111111111111111110111 这里可以为大家解释一下在内存中存储的是补码的原因,这里我举个例子 当计算机在计算1-1的时候,cpu是不能进行加法的,所有计算机实际上是在计算1+(-1),用加法模拟减法 这是1的原码00000000000000000000000000000001 这是-1的原码10000000000000000000000000000001 当使用这两个原码相加,计算出来的结果就为10000000000000000000000000000010 换算成十进制就为-2 这是1的补码0000000000000000000000000000001 这是-1的补码11111111111111111111111111111111 两个相加即为00000000000000000000000000000000 换算出来的十进制位就是0? 这里a的二进制位是:00000000000000000000000000001010 但是细心的读者可能已经发现如果这个地址用十六进制表示就应该为0000000a 这不就是把这个十六倒着存 在知道为什么这样存储的原因前,先让读者了解一下大端存储和小端存储。 这里可以假设a的地址位0x11223344,为了方便计算机读取内存中的信息,计算机有了两种存储方式分别为 ? ?这里我们需要了解计算机在内存中存储的字节序,当一个变量大于1个字节时,就会分成大端字节序和小端字节序 11 22 33 44 就为大端字节序, 44 33 22 11 就为小端字节序 大端字节序:11 22 33 44中44就是这个十六进制的低位,这里举个例子,十进制中123,3就是低位,1就是高位,假设左边是低地址,右边是高地址。将低位字节序放在高地址中,高位字节序存放在低地址处 小端字节序:高位字节序放在高地址处,低位字节序放在低位处 这里我们也可以看出,我们的a=-10这个变量在我们现在的编译器中是小端存储的 那么这里我们能否通过设计一个小程序来测量计算机是大端存储还是小端存储呢? 这个留着下一篇文章讲解? |
|
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 5:00:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |