当前位置:网站首页>數據在內存中的存儲相關內容
數據在內存中的存儲相關內容
2022-06-25 13:13:00 【LIn_jt】
數據在內存中的存儲相關內容
我們已經知道,c語言中有以下這麼幾種變量類型,分別為:>
char //字符類型
short //短整型
int //整型
long //長整型
long long //更長的整型
float //單精度浮點數
double //雙精度浮點數
本文將介紹整型數據在內存中的存儲。
首先就是將整型類型歸一下類啦,要注意的是,char 類型也歸結到整型類型裏面,因為字符類型在內存中是以ascii碼值進行存儲的.
也即整型家族裏面一共有這幾比特成員:>
我們知道,在創建一個變量的時候,會相應的在內存中開辟一塊空間,那麼這個變量的數據是如何存儲在內存當中的?,我們需要先了解以下幾個內容:>
一.原碼反碼補碼
1.原碼:
按照該數據直接寫出的二進制比特就是該數的補碼,舉個栗子:
我們通過-1直接寫出來該二進制序列即為該數的原碼,要注意的是,該二進制序列最高比特為符號為,負數為1,正數為0
2.反碼:
反碼在原碼的基礎上,符號比特不變,其他比特按比特取反,還是上面的例子,我們看一下-1的反碼:>
![**[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-rHAuNVSj-1637644746297)(C:\Users\MSI-NB\AppData\Roaming\Typora\typora-user-images\image-20211122232506362.png)]**](/img/e3/3104dbe088e3e02cbdc8c6668ae819.png)
3.補碼:
補碼在原碼的基礎上+1即可:
這就是我們那個熟悉的全1二進制序列了
因此,原反補的計算規則為:

補碼想轉化到原碼也即以上的逆過程,即補碼-1得到反碼,然後反碼符號比特不變,其他比特按比特取反即可.
上述討論是基於該數據是負數的情况下,實際上,若數據為正數,其原碼反碼補碼都是一樣的,舉個栗子

原碼反碼補碼都為該二進制序列。
而內存中存儲的都為補碼。可以用原碼計算一下-1+1,你會發現結果等於-2,常識告訴我們這是不可能的:

二.大小端存儲
我們先來看一下一個變量在內存中的存儲情况:

我們發現,這個變量在內存中是倒著存儲的,即44332211以此存儲,實際上,變量在內存中的存儲有兩種情况:
我們知道,44是a的低比特字節序,如果低比特字節序存放在高地址處,高比特字節序放在低地址處,則稱為大端存儲。
而以下

則稱其為小端存儲,即將低比特字節序的內容存放在低地址處,高比特字節序的內容存放在高地址處。
現在我們給出大端小端的概念:
大端存儲:指將數據的低比特字節序的內容存放在高地址處,高比特字節序的內容存放在低地址處。
小端存儲:指將數據的低比特字節序的內容存放在低地址處,高比特字節序的內容存放在高地址處。
現在我們設計一個程序來判斷vs環境下是大端存儲還是小端存儲,我們只需要看一個數據第一個字節中的內容即可,即


因此,我們只需要訪問到第一個字節的內容即可,那我們就需要用到一個char類型的指針變量。
我們設計出以下程序:>

結果是:>
因此,vs編譯器底下整型數據存儲為小端存儲。
边栏推荐
- 515. Find Largest Value in Each Tree Row
- Django framework - caching, signaling, cross site request forgery, cross domain issues, cookie session token
- 字符串入门十八讲合集四
- 1024水文
- Heavyweight live | bizdevops: the way to break the technology situation under the tide of digital transformation
- Which Chinese virtual human is better? Sullivan, IDC: Xiaobing Baidu Shangtang ranks in the first echelon
- Native JS --- infinite scrolling
- Analyse de l'optimisation de la réécriture des requêtes lazyagg de l'entrepôt
- It is extraordinary to make a move, which is very Oracle!
- 一篇文章讲清楚MySQL的聚簇/联合/覆盖索引、回表、索引下推
猜你喜欢

坡道带来的困惑

nacos无法修改配置文件Mysql8.0的解决方法

Three lines of code to simply modify the project code of the jar package

Uncover gaussdb (for redis): comprehensive comparison of CODIS

Django framework - caching, signaling, cross site request forgery, cross domain issues, cookie session token

三行代码简单修改jar包的项目代码
![[machine learning] parameter learning and gradient descent](/img/28/bb0a66b5f0702c995ca9cd7546b678.jpg)
[machine learning] parameter learning and gradient descent

First acquaintance with CANopen

Introduction to mongodb chapter 01 introduction to mongodb

WIN10环境下配置pytorch
随机推荐
汇编标志位相关知识点(连)
Meichuang was selected into the list of "2022 CCIA top 50 Chinese network security competitiveness"
几分钟上线一个网站 真是神器
Common colors for drawing
You can't specify target table 'xxx' for update in from clause
二叉树之_哈夫曼树_哈弗曼编码
Sword finger offer II 032 Effective anagrams
5 kinds of viewer for browser
[turn] starting from the end, analyze in detail how to fill in the college entrance examination volunteer
KDD 2022 | GraphMAE:自监督掩码图自编码器
Elemtnui select control combined with tree control to realize user-defined search method
Geospatial search: implementation principle of KD tree
关于数据在内存中存储的相关例题
Heavyweight live | bizdevops: the way to break the technology situation under the tide of digital transformation
MySQL writes user-defined functions and stored procedure syntax (a detailed case is attached, and the problem has been solved: errors are reported when running user-defined functions, and errors are r
My first experience of go+ language -- a collection of notes on learning go+ design architecture
515. Find Largest Value in Each Tree Row
20220620 面试复盘
Conway's law can not be flexibly applied as an architect?
Summer Ending