当前位置:网站首页>【 C Advanced language】 Integer Storage in Memory
【 C Advanced language】 Integer Storage in Memory
2022-06-11 21:12:00 【Super, pas chauve.】
Cette série,Nous allons explorerCContenu plus profond dans la langue!
Super produit
Catalogue des articles
Préface
Dans le processus quotidien de frappe de code,Nous utilisons souvent des constantes entières pour assigner des variables,Mais nous n'avons peut - être pas réfléchi à la façon dont différentes variables sont stockées en mémoire.!Aujourd'hui, je vais explorer les mystères..
La capacité interne peut être un peu plus grande,On n'a pas fini de regarder.,Regarde.!
Un.、Qu'est - ce qu'un entier??
1.Classification des entiers
Le type entier comprend: char,short,int,long,long long.Bien sûr que si.,PourquoicharC'est un lifting.?
C'est parce quechar Les caractères correspondent ASCIIValeur du Code, Bien sûr que si. ! C'est la famille des plasticiens. !
2. Les entiers stockent en mémoire les bases que vous devez connaître (Original anti - complément)
En mémoire,Que ce soit positif ou négatif, Les formes de stockage sont des compléments !!
Tout d'abord,,Lorsqu'il est stocké en mémoire, Nous stockons tous des binaires entiers . Ensuite, le code source de l'entier est représenté par le binaire , Le contre - Code et le complément. !
Il y a trois types d'entiers dans un ordinateur 2Représentation décimale,C'est le code original.、Inversion et complément.
Les trois représentations ont deux parties: les bits symboliques et les bits numériques,Les bits de symbole sont utilisés0Représentation“Positif”,Avec1Représentation“Négatif”.
Original of positive、Contre、Le complément est le même.
Les trois représentations des entiers négatifs sont différentes
Code source
Le code source peut être obtenu en traduisant les nombres directement en binaires sous forme de nombres positifs et négatifs. .
Code inverse
Modifie le BIT de symbole du code source, D'autres bits peuvent être inversés à tour de rôle pour obtenir le Code inverse .
Complément
Code inverse+1J'ai un complément.
Exemples:int a= -20;(Le premier bit est le BIT de symbole)
Code source:10000000 00000000 00000000 00010100
Code inverse:11111111 11111111 11111111 11101011
Complément:11111111 11111111 11111111 11101111
Le complément est le mode de stockage en mémoire !!
3.Classification des entiers
Les entiers peuvent être divisés en deux types: signés et non signés !C'est - à - diresignedEtunsigned.
signedEtunsignedLa différence est Bits de symbole N'oublie pas. Bits numériques!
En général,int,char Les entiers égaux sont généralement des nombres signés .
Exemples:
unsigned int a= -20;
Nombre non signé, Traiter le BIT de symbole le plus en avant comme un bit numérique , Donc C'est un nombre positif. .Identique à l'original
Code source:10000000 00000000 00000000 00010100
Code inverse:10000000 00000000 00000000 00010100
Complément:10000000 00000000 00000000 00010100
2.、 Stockage spécifique
1.Taille
On peut trouver, Lorsqu'il est stocké en mémoire ,int aEtint b Ne devrait - il pas être stocké avec un complément binaire ? Ça ne devrait pas l'être.32 Le format de stockage binaire des bits ?
Et puis..., Nous explorons !

0x- Oui.16Représentation décimale,Donc nous avons deviné, C'est probablement un complément binaire. ,Par16 Affichage décimal , Alors essayez. !
int b=20;
Identique à l'original:0000 0000 0000 0000 0000 0000 0001 0100
( Nombre binaire par quatre bits ,Oui.16Nombre décimal)
16Représentation décimale:00 00 00 14
Une découverte surprenante,C'est pareil.!!!!!
Mais il y a quelques différences. , L'ordre est différent. !
Ça nous amène à ce que nous allons dire aujourd'hui. (Taille(Ordre des octets)) Grande extrémité petite extrémité

Grande extrémité: Le BIT inférieur des données est sauvegardé à une adresse élevée en mémoire , Le Haut bit des données est sauvegardé à l'adresse inférieure de la mémoire
Sous - section: Le BIT inférieur des données est sauvegardé à l'adresse inférieure en mémoire , Le BIT élevé des données est sauvegardé à l'adresse élevée de la mémoire
Alors..., Après avoir compris et maîtrisé , Essayez de stocker le compilateur que vous utilisez !
Comme le blogueur que j'utilise vs2022, Je vais essayer. !!
2.unsignedEtsignedDifférences entre les classes entières

Commençons par une question. , Explorer à travers les questions !
char a= -1;
Code source:10000000 00000000 00000000 00000001
Code inverse:111111111 11111111 11111111 11111110
Complément:11111111 11111111 11111111 11111111( Stockage en mémoire :Complément)
Maischar Prend un octet
11111111
Oui.%dProduits, Il s'agit donc d'une amélioration globale .
Règles de levage intégral: Est inférieur à son propre type ou à certaines opérations ,Une élévation de type entier se produit
1.signedType: Lorsque le nombre positif augmente ,Supplément1;Complément négatif0;( Le BIT de symbole utilisé comme bit le plus élevé )
2.unsignedType:En montant,Supplément direct0;
Alors,char a= -1,Par%dAu moment de la sortie,Lors du levage intégral,
11111111
Après reconstitution:11111111 11111111 11111111 11111111 Complément en mémoire , Sortie en code source
Code source:10000000 00000000 00000000 00000001
(Code d'origine du complément, C'est toujours l'inverse. (Le BIT du symbole reste inchangé!),Encore un.)
Donc le résultat final est -1
signed char a = -1Avecchar a = -1 C'est pareil.
Dans de nombreux environnements ,char,intSont des nombres signés!
Donc le résultat est toujours -1
unsigned char a = -1
Code source:10000000 00000000 00000000 00000001
Code inverse:111111111 11111111 11111111 11111110
Complément:11111111 11111111 11111111 11111111
Prend seulement le dernier octet
11111111
Lifting( Supplément pour l'augmentation du nombre non signé 0 ):00000000 00000000 00000000 11111111( Mémoire pour compléter Stockage par Code)
Le chiffre le plus élevé est0,Est un nombre positif, Les compléments positifs et négatifs sont les mêmes ,Donc le résultat est 255.
Regardez les résultats ensemble.

Je crois que tout le monde sait déjà, Et vous vous y connaissez. , Bien sûr que si. !
Frappe le fer quand il fait chaud. !

(%u Pour la sortie non signée )
Original10000000 00000000 00000000 10000000
Contre11111111 11111111 11111111 01111111
Supplément11111111 11111111 11111111 10000000
char 10000000
Lifting 11111111 11111111 11111111 10000000
Résultats :4294967168

La réponse:-10
Ça s'est bien passé? ?
Résumé
1.En mémoire,Que ce soit positif ou négatif, Les formes de stockage sont des compléments !!
2.En général,int,char Les entiers égaux sont généralement des nombres signés .
3.Taille
Grande extrémité: Le BIT inférieur des données est sauvegardé à une adresse élevée en mémoire , Le Haut bit des données est sauvegardé à l'adresse inférieure de la mémoire
Sous - section: Le BIT inférieur des données est sauvegardé à l'adresse inférieure en mémoire , Le BIT élevé des données est sauvegardé à l'adresse élevée de la mémoire
N'oublie pas de réfléchir. !
边栏推荐
- Serval and Rooted Tree(CF1153D)-DP
- 全球机器视觉市场规模持续上涨,PoE图像采集卡为工业相机提供高速传输通道
- Ubantu1804 two opencv versions coexist
- Lr-link Lianrui makes its debut at the digital Expo with new products - helping the construction of new infrastructure data center
- [index system] the latest modeling method of data warehouse index system
- RANSAC extraction plane (matlab built-in function)
- Solution to the problem of PHP strtotime obtaining natural monthly error
- How to Load Data from CSV (Data Preparation Part)
- Goto statement of go language
- How to manually drag nodes in the Obsidian relationship graph
猜你喜欢
Recompile kubeadm to solve the problem of certificate expiration in one year

New product release: lr-link Lianrui launched the first 25g OCP 3.0 network card

Live broadcast with practice | 30 minutes to build WordPress website with Alibaba cloud container service and container network file system
![[data visualization] Apache superset 1.2.0 tutorial (II) - Quick Start (visualizing King hero data)](/img/21/c2212a674fdf77571305446217a5ca.png)
[data visualization] Apache superset 1.2.0 tutorial (II) - Quick Start (visualizing King hero data)

使用 float 创建一个网页页眉、页脚、左边的内容和主要内容。

BCC tool tool usage

Part II data link layer

go语言的goto语句

One article to show you how to understand the harmonyos application on the shelves
![[nk] deleted number of 100 C Xiaohong in Niuke practice match](/img/f1/a99600e1800c087aceb60a559dee39.png)
[nk] deleted number of 100 C Xiaohong in Niuke practice match
随机推荐
Part II data link layer
Add personal statement for go file in file template in Golan
JS monitor scrolling touch bottom load more_ Browser scrolls to the bottom to load more
gateway先启动其他微服务,在启动网关,网关启动不了,且无异常日志;先启动网关,所有服务能正常启动
[Game Theory - introduction]
全球机器视觉市场规模持续上涨,PoE图像采集卡为工业相机提供高速传输通道
ASCII码对照表
电竞网咖用2.5G网卡,体验飞一般的感觉!
JVM方法区
【生活思考】文字与语音
[data visualization] use Apache superset to visualize Clickhouse data
What are striplines and microstrip lines? Reference planes and transmission lines
New product release: lr-link Lianrui launched the first 25g OCP 3.0 network card
Frequency domain filter
JSON introduction
Log in with password and exit with error for three times.
[data visualization] Apache superset 1.2.0 tutorial (III) - detailed explanation of chart functions
Technical exchange | why should network security equipment use bypass function
The secret of derating - don't challenge Datasheet
周刊02|不瞞你說,我其實是MIT的學生

