当前位置:网站首页>【 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. !
边栏推荐
- [Monday commuter radio station] cron expression. It's enough to read this article
- Ubantu1804 two opencv versions coexist
- Recompile kubeadm to solve the problem of certificate expiration in one year
- Pyqt5 technical part - cause of the problem that setting the top of the window does not take effect. Setwindowflags() does not take effect after setting the parameters. Solution
- Application scenario: wide application of Poe network card in NDI technology for live broadcast program production
- Capriccio in the Internet Age
- Js 监听滚动触底加载更多_浏览器滚动触底加载更多
- Implement AOP and interface caching on WPF client
- [data visualization] Apache superset 1.2.0 tutorial (III) - detailed explanation of chart functions
- Network security Kali penetration learning introduction to web penetration using MSF penetration to attack win7 host and execute commands remotely
猜你喜欢

Release of version 5.6 of rainbow, add multiple installation methods, and optimize the topology operation experience

【数据可视化】Apache Superset 1.2.0教程 (三)—— 图表功能详解

JVM对象分配策略TLAB

Which Bluetooth headset is better within 500? Inventory of gifts for girls' Day

The scale of the global machine vision market continues to rise. Poe image acquisition card provides a high-speed transmission channel for industrial cameras
Recompile kubeadm to solve the problem of certificate expiration in one year

Cs144 lab0 lab1 record

Redis fourth session - redis high performance principle (multiplexing) and high availability analysis (backup, master-slave)

Why is your LDO output unstable?

【数据可视化】Apache Superset 1.2.0教程 (二)——快速入门(可视化王者英雄数据)
随机推荐
RANSAC extract cylinder (matlab built-in function)
Go language conditional statement
Cuckoo Hash
Tensorflow 2. X Getting Started tutorial
为什么100G网络传输要使用iWARP、RoCE v2、NVMe-oF等协议
Technical exchange | why should network security equipment use bypass function
Why is your LDO output unstable?
Live broadcast with practice | 30 minutes to build WordPress website with Alibaba cloud container service and container network file system
Capriccio in the Internet Age
Redis第四话 -- redis高性能原理(多路复用)和高可用分析(备份、主从)
桌面以及文件资源管理器无限重启的解决
应用业务层修改
Go语言条件语句
[index system] the latest modeling method of data warehouse index system
The gateway starts other microservices first. When the gateway is started, the gateway cannot be started and there is no exception log; Start the gateway first, and all services can be started normall
The input value "18-20000hz" is incorrect. The setting information is incomplete. Please select a company
BUG -- coredump使用
The secret of derating - don't challenge Datasheet
【指标体系】最新数仓指标体系建模方法
One article to show you how to understand the harmonyos application on the shelves

