Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2160 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [c++] little endian et big endian

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] little endian et big endian

n°241915
unite_01
Trance For Life
Posté le 08-11-2002 à 18:37:25  profilanswer
 

voila un copain ma demande ce que c etai que les objet c++ suivant :
 
little endian
big endian
 
mais j ai pas su lui dir alors je vien vous demande :)
 
mci


---------------
La Paix Est Le But La Trance Est Le Chemin www.tranceonline.ch
mood
Publicité
Posté le 08-11-2002 à 18:37:25  profilanswer
 

n°241939
mrbebert
Posté le 08-11-2002 à 19:59:12  profilanswer
 

Ce ne sont pas des objets, mais un type de codage.
Ca dépend de la façon dont le processeur gère les entiers.
 
Prenons l'exemple d'une entier de 4 octets 0x44332211 en héxa.
Un processeur x86 va stocker en mémoire les octets 0x11 puis 0x22, 0x33 et enfin 0x44.
D'autres processeurs feront l'inverse en stockant d'abord l'octet de poids fort 0x44.
 
Ca pose problème quand tu envoies des données d'un ordinateur à l'autre. Les 4 octets représentant l'entier ne seront pas compris de la même façon.
 
Mais je sais jamais lequel est lequel :??:
 
edit : évidemment, j'ai inversé le sens [:mareek]


Message édité par mrbebert le 08-11-2002 à 20:44:31
n°241957
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-11-2002 à 20:40:14  profilanswer
 

intel il le stocke "à l'envers" il me semble, donc si tu regardes en hexa un fichier où tu as écris un integer, tu auras l'octet de poids faible en premier
donc 1 s'écrira 01 00 00 00 (4 octets, 4x 2 digits hexa), ça c'est big endian je crois...


Message édité par antp le 08-11-2002 à 20:40:24

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°241960
matafan
Posté le 08-11-2002 à 20:42:36  profilanswer
 

C'est l'idée mais en fait c'est l'inverse. Les x86 sont little-endian, et vont stocker 0x44 (le "little end" ) en premier (aux adresses basses), et le 0x11 (le "big end" ) en dernier (aux adresses hautes).
 
Les processeurs Motorola, eux, sont par contre big-endian.
 
 
Edit : je réponsais bien sûr à mrbebert, antp s'est intercallé.
 
Re-edit après le 4ème post d'antp : évidemment ce qui est au dessus est faut. Le "little end" c'est 0x11, et c'est finalement tout comme a dit mrbebert.


Message édité par matafan le 08-11-2002 à 21:57:13
n°241962
mrbebert
Posté le 08-11-2002 à 20:43:59  profilanswer
 

oui, exact, je me suis planté dans l'écriture du nombre en hexa :jap:  [:proy]

n°241966
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-11-2002 à 20:48:14  profilanswer
 

heu t'es sûr que l'intel inverse pas ?
pcq quand je dois comparer une valeur lue dans un fichier, genre 0x11223344 vu par un éditeur hexa, en Pascal je dois taper $44332211


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°241967
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-11-2002 à 20:50:42  profilanswer
 

Code :
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   i: Integer;
  4. begin
  5.   i := 2;
  6.   with TFileStream.Create('t:\bidon.dat', fmCreate) do
  7.     try
  8.       Write(i, SizeOf(i));
  9.     finally
  10.       Free;
  11.     end;
  12. end;


 
j'ai dans mon fichier vu en hexa : 02 00 00 00


Message édité par antp le 08-11-2002 à 20:50:59

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°241969
matafan
Posté le 08-11-2002 à 20:52:43  profilanswer
 

Oui c'est ce que j'ai dit : l'octet le moins significatif en premier. Je répondais à mrbebert, tu t'es intercallé entre temps :pt1cable:

n°241971
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 08-11-2002 à 20:54:39  profilanswer
 

Moi j'aime pas les indiens [:benou]
 
 
[:dehors2]

n°241981
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-11-2002 à 21:30:35  profilanswer
 

Matafan a écrit a écrit :

Oui c'est ce que j'ai dit : l'octet le moins significatif en premier. Je répondais à mrbebert, tu t'es intercallé entre temps :pt1cable:  




 
dans ton post j'ai l'impression que tu disais le contraire :crazy:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 08-11-2002 à 21:30:35  profilanswer
 

n°241989
matafan
Posté le 08-11-2002 à 21:54:31  profilanswer
 

Ah oui effectivement le petit bout c'est 0x11, pas 0x44 :o Donc mrbebert avait raison. En fait le truc c'est que j'imaginais l'exemple 0x11223344... Mais bon pas d'excuses.

n°241997
mrbebert
Posté le 08-11-2002 à 22:10:42  profilanswer
 

Matafan a écrit a écrit :

Ah oui effectivement le petit bout c'est 0x11, pas 0x44 :o Donc mrbebert avait raison. En fait le truc c'est que j'imaginais l'exemple 0x11223344... Mais bon pas d'excuses.


Je lui dit ou pas que c'est ce que j'avais mis quand il a écrit son post et que j'ai inversé ensuite :D

n°242000
matafan
Posté le 08-11-2002 à 22:16:44  profilanswer
 

Rah le sauvage
Va finir par être dur à suivre ce thread :D

n°242091
Musaran
Cerveaulté
Posté le 09-11-2002 à 04:23:36  profilanswer
 

Bref, on parle d'inversion de posts... pardon, d'octets.
 
Si on stocke des nombres de 4 ou 2 octets à l'adresse 0:

    0x87654321  0x4321
adr. little big  L  B
0000 21     87   21 43
0001 43     65   43 21
0002 65     43
0003 87     21


Le little-endian a l'avantage que les octets de même poids se trouvent au même endroit quelque soit la taille du type écrit.
 
Les éditeurs hexadécimaux nous embrouillent, car ils écrivent les octets comme du texte (de gauche à doite), alors que les deux chiffres héxadécimaux composant un octet sont écrit comme des chiffres (de droite à gauche):

    00 01 02 03 (adresse)
0000 21 43 64 87 (little)
0000 87 65 43 21 (big)


Le big-endian a l'avantage d'être plus lisible sous cette forme, mais c'est bien le seul intérêt que je que lui trouve.
 
 
Donc, les processeurs intels n'inversent rien du tout, pas plus que les motorola.
Ils sont l'inverse l'un de l'autre, c'est tout.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°242604
unite_01
Trance For Life
Posté le 10-11-2002 à 13:37:06  profilanswer
 

merci pour vos reponse et correction ^^  :jap:


---------------
La Paix Est Le But La Trance Est Le Chemin www.tranceonline.ch

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c++] little endian et big endian

 

Sujets relatifs
Lire/écrire du Little Endian en Java [resolu]Little/Big Endian : programmation d'un module C ?
Plus de sujets relatifs à : [c++] little endian et big endian


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)