Litlle-Endian?
|
04-01-2013, 14h15
Message : #1
|
|
gr4ph0s
Membre Messages : 32 Sujets : 5 Points: 11 Inscription : Aug 2011 |
Litlle-Endian?
Salut tout le monde je recherche en effet le moyen de passer du nombre de droite au nombre de gauche et inversement ^^
Donc voici la liste : [spoiler] Code : 1 8 Suite au conseil de Ark sur IRC j'ai donc pensé que c'étais qu'une simple histoire de litlle-endian(qui en sois n'est pas sorcier) Mais c'est la que viens mon problème... Pour 1 et 8 pas de problème => 8 en binaire = 10 00 donc sa donne 00 01 en litlle endian donc 1 Pour 2 et 64 la non plus => 64 en binaire = 01 00 00 00 donc sa donne 00 00 00 10 en litlle endian donc 2 Mais par contre pour 3 et 72... si je suis la même méthode 72 en binaire = 01 00 10 00 donc sa donne 00 01 00 01 en litlle sois 17 et non 3... Donc je ne vois pas trop ai-ce ma technique qui n'est pas bonne? Bref merci d'avance et surtout un truc que je n'ai pas compris pourquoi tout les système ne lisse pas pareil le binaire? ^^'
"Institutions qui t'apprend dès l'départ que dans c'monde le verbe être ne peut se conjuguer sans avoir"
- Keny Arkana |
|
04-01-2013, 14h49
Message : #2
|
|
ark
Psyckomodo! Messages : 1,033 Sujets : 48 Points: 317 Inscription : Sep 2011 |
RE: Litlle-Endian?
Ah, tu cherches donc une opération qui marche pour pour toute ta liste ?
Apres, pour le little / big endian, c'est juste une notation, 0b1000 en big endian ca fait 8(10). Mais 0b0001 en little endian c'est toujours 8(10) :p C'est juste la notation qui change. |
|
04-01-2013, 15h17
(Modification du message : 04-01-2013, 15h19 par gr4ph0s.)
Message : #3
|
|
gr4ph0s
Membre Messages : 32 Sujets : 5 Points: 11 Inscription : Aug 2011 |
RE: Litlle-Endian?
Oui je recherche une opération(qui normalement est la même, je verrais pas pourquoi ça ne serais pas la même ^^) pour toute la liste. En effet les nombres de gauche sont les données dans la base de donné et les nombres de droites ceux dans un fichier.
Mon but étant de faire un programme pour gérer la mise à jour automatique de la BDD en fonction du fichier Oui ce n'est qu'une notation mais bon transformer 0b1000 en binaire big endian ne donnera pas(logiquement) la même chose que 0b0001 en big endian :p
"Institutions qui t'apprend dès l'départ que dans c'monde le verbe être ne peut se conjuguer sans avoir"
- Keny Arkana |
|
04-01-2013, 15h52
(Modification du message : 04-01-2013, 16h00 par gruik.)
Message : #4
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: Litlle-Endian?
pour effectuer une conversion vers du gros indien l'instruction movbe fait ça très bien sur 16, 32 ou 64 bits
sinon pour essayer d'y voir un peu plus clair : Code PYTHON :
les choses apparaissent mieux, on voit clairement qu'il s'agit pas d'une conversion little/big endian, on dirait que chaque bit est comme séparé par '00', au début j'ai cru à un truc genre 8^bitnum, mais ca tombe vite à l'eau, on dirait également qu'il y a une sorte de wrap des bits, ou alors il s'agit peut être juste d'une transformation bit à bit en tous cas j'ai plutot l'impression que la transformation n'est pas simpliste comme une conversion xyz ou une opération standard, à voir... btw t'aurais moyen de choper les valeurs pour 32, 64 et 128 stp ? |
|
05-01-2013, 01h39
(Modification du message : 05-01-2013, 01h39 par gr4ph0s.)
Message : #5
|
|
gr4ph0s
Membre Messages : 32 Sujets : 5 Points: 11 Inscription : Aug 2011 |
RE: Litlle-Endian?
32 dans la BDD me donne 256 dans le fichier.
64 dans la BDD me donne 2097152 dans le fichier. L'ID 128 n'existe pas(va savoir pourquoi?..) mais 256 dans la BDD me donne 4 dans le fichier Selon mes recherche a creuser peut être mais sa me parait bien compliqué. 1 = 8 => 8 2 = 64 => 8*8 3 = 72 => 8*8+8 4 = 512 => (8*8*8) 5 = 520 => (8*8*8) + 8 6 = 576 => (8*8*8) + (8*8) 7 = 584 => (8*8*8) + (8*8+8) 8 = 32768 => (8*8*8) *8*8 9 = 32776 => ((8*8*8) *8*8) + 8 10 = 32832 => ((8*8*8) *8*8) + 8*8 11 = 32840 => ((8*8*8) *8*8) + 8*8+8 12 = 33280 => ((8*8*8) *8*8) + (8*8*8) 13 = 33288 => (((8*8*8) *8*8) + (8*8*8)) + 8 14 = 33344 => (((8*8*8) *8*8) + (8*8*8)) + 8*8 15 = 33352 => (((8*8*8) *8*8) + (8*8*8)) + 8*8+8 Et la Dafuck.... 16 = 2 17 = 10 => 2+8 18 = 66 => 2+8*8 19 = 74 => 2+8*8+8 En effet il semblerais que toute les 16 ID on recommence au début... Mais bon c'est bizarre et je reste persuadé qu'il s'agit d'une opération sur les bits car ça serais complètement illogique de devoir refaire à chaque fois une suite mathématique pour obtenir l'ID 9082006 par exemple. En tout cas merci de ta réponse
"Institutions qui t'apprend dès l'départ que dans c'monde le verbe être ne peut se conjuguer sans avoir"
- Keny Arkana |
|
06-01-2013, 01h35
Message : #6
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: Litlle-Endian?
comme ça au pif je dirais que c'est de la pure permutation de bits, alors peut-être qu'il y a une formule magique derrière évidement...
actuellement on aurait donc la table de permutations suivante : Code PYTHON :
ça se vérifie bien, par exemple 19 en décimal donne 10011 en binaire, passé à la permutation de bits on obtient 2*1 + 32768*0 + 512*0 + 64*1 + 8*1 soit 2 + 64 + 8 = 74, comme prévu il serait donc intéressant d'avoir les valeurs pour 512,1024,2048,4096,8192,16384,32768,65536 etc. voire jusqu'à 2^24 ou 2^32 possiblement (puisque 2097152 = 2^21) toujours au pifomètre je verrais bien le bit 12 (4096) correspondre à 1, une intuition... |
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)