当前位置:网站首页>【 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. !
边栏推荐
猜你喜欢

周刊02|不瞒你说,我其实是MIT的学生

从概率论基础出发推导卡尔曼滤波

Part I physical layer

Redis第四话 -- redis高性能原理(多路复用)和高可用分析(备份、主从)

Teach you how to use win7 system to quickly build your own website

Role of RESNET residual block

Goto statement of go language

Live broadcast with practice | 30 minutes to build WordPress website with Alibaba cloud container service and container network file system

The input value "18-20000hz" is incorrect. The setting information is incomplete. Please select a company
![[data visualization] use Apache superset to visualize Clickhouse data](/img/4b/a73c2eb810f1d2b492e950afb2d0bc.png)
[data visualization] use Apache superset to visualize Clickhouse data
随机推荐
[data visualization] Apache superset 1.2.0 tutorial (III) - detailed explanation of chart functions
Goland中在文件模板中为go文件添加个人声明
JVM之堆区
产品资讯|PoE网卡家族集体亮相,机器视觉完美搭档!
JVM method area
Why is your LDO output unstable?
The secret of derating - don't challenge Datasheet
[data visualization] use Apache superset to visualize Clickhouse data
RANSAC提取圆柱(MATLAB内置函数)
[game theory complete information static game] strategic game
Solution to the problem of PHP strtotime obtaining natural monthly error
ORA-04098: trigger ‘xxx.xxx‘ is invalid and failed re-validation
Toolbar替换ActionBar后Title不显示
How to add text on the border in bar code software
PHP strtotime 获取自然月误差问题解决方案
银泰百货与淘宝天猫联合打造绿色潮玩展,助力“碳中和”
Title does not display after toolbar replaces actionbar
应用场景:现场直播节目制作NDI技术中PoE网卡的广泛应用
Release of version 5.6 of rainbow, add multiple installation methods, and optimize the topology operation experience
Serval and Rooted Tree(CF1153D)-DP

