当前位置:网站首页>À propos du stockage des données en mémoire
À propos du stockage des données en mémoire
2022-06-25 13:10:00 【Lin JT】
À propos du stockage des données en mémoire
Cet article explique comment les nombres flottants sont stockés en mémoire
Tout d'abord,,Regardons d'abord cette procédure:>

En apprenant, La réponse que j'ai donnée est très simple9 9.0 9 9.0,Et pourtant,Quand le programme a commencé:>

Pour analyser les procédures ci - dessus, Il faut d'abord comprendre le stockage des nombres flottants en mémoire.
Pour les nombres binaires flottants, Conformément aux normes internationalesIEEE(Institute of Electrical and Electronic Engineering) 754, N'importe quel nombre binaire de points flottantsVPeut être exprimé sous la forme suivante:>
*(-1) ^S * M 2 ^E
Parmi eux(-1)^SEst un bit de symbole,Quands = 0 Heure,VEst un nombre positif, Quand le nombre de points flottantss = 1 , VEst négatif.
MEst un bit valide, M>=1EtM < 2
2 ^ELa puissance indique le chiffre de l'indice
Par exemple,:>
Par exemple, un nombre décimal flottant 5.5,On le convertit en binaire pour:>
101.1 //Ici. .1La raison pour laquelle1Le poids de2 ^-1Secondaire,C'est - à - dire:0.5.Et nous utilisons çaVFormat de,Pour pouvoir écrire:>
*(-1)^0 1.011 * 2 ^ 2
C'est - à - dire:S = 0; M = 1.011; E = 2;
Pour-5.5,Avec çaVFormat de, Peut être exprimé comme suit:
*(-1)^1 (1.011) * 2 ^2;
Pour le stockage de nombres flottants en mémoire,Il existe les dispositions suivantes:
Pour un seul flotteur de précision

Pour le nombre de points flottants de double précision:>

Il y a aussi des dispositions: Parce queMToujours.>=1 Moins de2, C'est - à - dire:MToujours égal à1Un entier de, Donc,,Quand il est stocké en mémoire,Il n'y aura que des décimales,Exemple 5.5
Peut être exprimé comme suit:**(-1)^0 1.011 * 2 ^ 2*, M = 1.011. Mais les recettes que nous stockons, Ne stockera que011, Et quand on va l'utiliser, C'est tout.1C'est bon..
Pour l'indiceEEn termes, Le premier est ununsigned intNombre de types, Donc sa portée est 0 ~ 255(8bit) Ou 0 ~2047(11bit)
Et quand il est exprimé par comptage scientifique, C'est inévitableECas de nombre négatif Par exemple Décimal0.5 Exprimé en nombre binaire comme:>
1*10 ^-1 Encore.EEst supérieur ou égal à0, Donc,, Stockage de mémoire spécifiéELa valeur réelle de doit être ajoutée à un nombre intermédiaire, I.e.127 (8bit) Ou1023(11bit)Après,Stockage en mémoire
Comme tout à l'heure-1.,Enregistrer sous32Bit float, Enregistrer sous -1 + 127 = 126C'est - à - dire:
01111110
En outre, IndexEEt les règles suivantes:>
SiELes valeurs de ne sont pas toutes1Ou0, EtELa valeur réelle de est la valeur stockée en mémoire moins127(Ou1023),Ensuite, les chiffres validesMAjouter le premier.
Comme tout à l'heure0.5 BinaireVExprimé en:>
1.0*2 ^ -1 Ici.EPour-1, MPour1.0,Donc les données stockées en mémoire sont
0 01111110 00000000000000000000000
SiELes données stockées dans sont complètes0Heure, Alors réfléchissons., Quel petit nombre!,C'est - à - dire:2^ -127Secondaire, Donc,, Les dispositions sont les suivantes::>
QuandELes données stockées dans sont complètes0Heure, Son indiceELa valeur réelle de 1 - 127(Ou1023), Et un nombre valideMPlus de, Mais plus0, C'est un signe de proximité0Nombre de.
QuandELes données stockées dans le sont pour un temps complet, AlorsELa valeur réelle de128(8bit), Alors2^ELa puissance est un très grand nombre, Donc,,VExprimé en infini positif et négatif.
Revenons au premier exemple:>
#include <stdio.h>
int main()
{
int n = 9;
float* pFloat = (float*)&n;
printf("nLa valeur de:%d\n", n);
printf("*pFloatLa valeur de:%f\n", *pFloat);
*pFloat = 9.0;
printf("numLa valeur de:%d\n", n);
printf("*pFloatLa valeur de:%f\n", *pFloat);
return 0;
}

Regardez la deuxième partie:>

Sous forme de points flottantsnC'est changé.9.0,Alors9.0La représentation binaire de:>
1001.0C'est - à - dire:1.001*2^3 AlorsS = 0; E = 3 + 127 = 130; M = 0.001.C'est - à - dire:
0 1000 0010 00100000000000000000000
Donc, en termes d'entiers,Ces données sont:>
![[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-Lw2C6Cbn-1638165164585)(C:\Users\MSI-NB\AppData\Roaming\Typora\typora-user-images\image-20211129090318437.png)]](/img/80/a182c36b6a88835bfbf0b336075649.png)
Sous forme de points flottants, Bien sûr que9.0C'est.
边栏推荐
- 重装cuda/cudnn/pytorch
- nacos无法修改配置文件Mysql8.0的解决方法
- My first experience of go+ language -- a collection of notes on learning go+ design architecture
- list.replace, str.append
- [visio] solving the fuzzy problem of parallelogram in word
- New Gospel of drug design: Tencent, together with China University of science and technology and Zhejiang University, developed an adaptive graph learning method to predict molecular interactions and
- 剑指 Offer II 025. 链表中的两数相加
- Oracle backup or restore database (expdp, impdp)
- Maui's learning path (II) -- setting
- Jenkins pipeline uses
猜你喜欢

Geospatial search: implementation principle of KD tree

First acquaintance with CANopen

二叉树之_哈夫曼树_哈弗曼编码

Fedora 35 部署DNS主从和分离解析 —— 筑梦之路

PPT绘论文图之导出分辨率

My first experience of go+ language -- a collection of notes on learning go+ design architecture

Fedora 35 deploys DNS master-slave and separation resolution -- the way to build a dream
![[转]以终为始,详细分析高考志愿该怎么填](/img/77/715454c8203d722e246ed70e1fe0d8.png)
[转]以终为始,详细分析高考志愿该怎么填

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

剑指 Offer II 029. 排序的循环链表
随机推荐
出手即不凡,这很 Oracle!
Geospatial search - > R tree index
Conway's law can not be flexibly applied as an architect?
Which Chinese virtual human is better? Sullivan, IDC: Xiaobing Baidu Shangtang ranks in the first echelon
康威定律,作为架构师还不会灵活运用?
Meichuang was selected into the list of "2022 CCIA top 50 Chinese network security competitiveness"
Module 5 (microblog comments)
JVM参数解释
mysql导入导出数据到excel表日期出现问题
重装cuda/cudnn/pytorch
Configuring pytorch in win10 environment
C # switch between Chinese and English input methods
剑指 Offer 第 1 天栈与队列(简单)
中国虚拟人哪家强?沙利文、IDC:小冰百度商汤位列第一梯队
解析数仓lazyagg查询重写优化
AGCO AI frontier promotion (6.25)
20220620 interview reply
You can't specify target table 'xxx' for update in from clause
PPT绘图之AI助力论文图
MySQL learning notes