Tuto Unity
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Tuto Unity
Slts,
J’ai pas trouvé de fonction pour faire un décalage logique de 10 bits à droite de tous les bits d’un tableau de 4 mots, je me la suis paluché à la mano, pour info exemple ci dessous.
---------clic zoom--------- ---------décalage logique de 10 bits à gauche -----------
J’ai pas trouvé de fonction pour faire un décalage logique de 10 bits à droite de tous les bits d’un tableau de 4 mots, je me la suis paluché à la mano, pour info exemple ci dessous.
---------clic zoom--------- ---------décalage logique de 10 bits à gauche -----------
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Tuto Unity
Bonjour,
sans bien connaitre Unity, je fais trop de Siemens (on choisi pas toujours),
si tu définis deux variables une qui pointe sur l'adresse %M100 l'autre sur l'adresse 100-10 une simple copie de tableau et c'est réglé non.
sans bien connaitre Unity, je fais trop de Siemens (on choisi pas toujours),
si tu définis deux variables une qui pointe sur l'adresse %M100 l'autre sur l'adresse 100-10 une simple copie de tableau et c'est réglé non.
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Tuto Unity
j'ai 4 mots de 16 bits soit 64 bits, on veut décaler tous ces 64 bits de 10 bits à droite: exemple
%MW100:=16#FFFF
%MW101:=16#FFFF
%MW102:=16#FFFF
%MW103:=16#FFFF
Après le écalage de 10 à droite
%MW100:=16#FFFF
%MW101:=16#FFFF
%MW102:=16#FFFF
%MW103:=16#003F
Après le écalage de 10 à gauche
%MW100:=16#FC00
%MW101:=16#FFFF
%MW102:=16#FFFF
%MW103:=16#FFFF
%MW100:=16#FFFF
%MW101:=16#FFFF
%MW102:=16#FFFF
%MW103:=16#FFFF
Après le écalage de 10 à droite
%MW100:=16#FFFF
%MW101:=16#FFFF
%MW102:=16#FFFF
%MW103:=16#003F
Après le écalage de 10 à gauche
%MW100:=16#FC00
%MW101:=16#FFFF
%MW102:=16#FFFF
%MW103:=16#FFFF
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Tuto Unity
Ou comme ceci :
Code : Tout sélectionner
%MW100 := SHL (%MW100,10) + SHR(%MW101,6);
%MW101 := SHL (%MW101,10) + SHR(%MW102,6);
%MW102 := SHL (%MW102,10) + SHR(%MW103,6);
%MW103 := SHL (%MW103,10) + 0;
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Tuto Unity
c'est pas bon, mais on ne doit pas se comprendre, lol
-------
Faire un décalage à droite de tous les bits ça revient à éjecter les 10 premiers bits de la chaine de 64 bits
De ce fait on doit avoir les 10 derniers bits de la chaine de 64 bits à zéro, soit %MW103 :=16#003F
000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111
-------
Faire un décalage à droite de tous les bits ça revient à éjecter les 10 premiers bits de la chaine de 64 bits
De ce fait on doit avoir les 10 derniers bits de la chaine de 64 bits à zéro, soit %MW103 :=16#003F
000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Modifié en dernier par itasoft le 23 févr. 2025, 14:49, modifié 1 fois.
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Tuto Unity
Décalage à gauche
Si %MW103 était égale à FFFF après décalage il vaut en binaire 1111 1100 0000 0000 soit en hexa FC00
Décalage à droite :
Si %MW100 était égale à FFFF après décalage il vaut en binaire 0000 0000 0011 1111 soit en hexa 003F
Ou bien on ne se comprend pas en effet.
Code : Tout sélectionner
%MW100 := SHL (%MW100,10) + SHR(%MW101,6);
%MW101 := SHL (%MW101,10) + SHR(%MW102,6);
%MW102 := SHL (%MW102,10) + SHR(%MW103,6);
%MW103 := SHL (%MW103,10) + 0;Décalage à droite :
Code : Tout sélectionner
%MW103 := SHR (%MW103,10) + SHL(%MW102,6);
%MW102 := SHR (%MW102,10) + SHL(%MW101,6);
%MW101 := SHR (%MW101,10) + SHL(%MW100,6);
%MW100 := SHR (%MW100,10) ;
Ou bien on ne se comprend pas en effet.
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Tuto Unity
oui on ne se comprends pas, on laisse tomber, lol
il faut raisonner sur les 64 bits et non pas mot à mot
ps:
ya pas de mot de 64 bits sur UNITY (dommage) sinon ça reviendrait à faire un décalage logique à droite de 10 du mot de 64 bits
résultat
000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111
ps
Que celui qui a tout compris, léve le doigt , LOL
il faut raisonner sur les 64 bits et non pas mot à mot
ps:
ya pas de mot de 64 bits sur UNITY (dommage) sinon ça reviendrait à faire un décalage logique à droite de 10 du mot de 64 bits
résultat
000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111
ps
Que celui qui a tout compris, léve le doigt , LOL
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Tuto Unity
Tu as bien dis que tu cherchais à réaliser un décalage de 10 bits dans un tableau de 4 mots soit 64 bits.
Moi je comprends ceci : Voici ce que je t'ai proposé pour le décalage à gauche
Voici le résultat :
Je ne vois pas en quoi ce n'est pas bon.
Je laisse tomber.
Moi je comprends ceci : Voici ce que je t'ai proposé pour le décalage à gauche
Code : Tout sélectionner
%MW100 := SHL (%MW100,10) + SHR(%MW101,6);
%MW101 := SHL (%MW101,10) + SHR(%MW102,6);
%MW102 := SHL (%MW102,10) + SHR(%MW103,6);
%MW103 := SHL (%MW103,10) + 0;Je laisse tomber.
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Tuto Unity
Si tu prends un mot de 64 bits et fais un décalage à droite de 10 tu obtiens bien ça:
0000000000111111_1111111111111111_1111111111111111_1111111111111111
----- %MW103--------------- %MW102-------------- %MW101----------- %MW100 (poids faibles)
(*Résultat à obtenir Pour un décalage à GAUCHE de 10 *)
%MW100=16#FC00
%MW101=16#FFFF
%MW102=16#FFFF
%MW103=16#FFFF
(*Résultat à obtenir Pour un décalage à DROITE de 10 *)
%MW100=16#FFFF
%MW101=16#FFFF
%MW102=16#FFFF
%MW103=16#003F
OK, compris c'est bon, c'est parceque on ne mettait pas les poids faibles / poids forts dans le même ordre
toi: W100-W101-W102-W103
moi: W103-W102-W101-W100
car, c'est une valeur codée sur 64 bits et reçue dans 4 mots via une requete READ_VAR donc les poids faible sont sur le premier mot
(*Corrigé Décalage à GAUCHE de 10 *)
%MW103 := SHL (%MW103,10) + SHR(%MW102,6);
%MW102 := SHL (%MW102,10) + SHR(%MW101,6);
%MW101 := SHL (%MW101,10) + SHR(%MW100,6);
%MW100 := SHL (%MW100,10) ;(*%MW100=16#FC00*)
(*Corrigé Décalage à DROITE de 10 *)
%MW100 := SHR (%MW100,10) + SHL(%MW101,6);
%MW101 := SHR (%MW101,10) + SHL(%MW102,6);
%MW102 := SHR (%MW102,10) + SHL(%MW103,6);
%MW103 := SHR (%MW103,10); (*W103=16#003F*)
0000000000111111_1111111111111111_1111111111111111_1111111111111111
----- %MW103--------------- %MW102-------------- %MW101----------- %MW100 (poids faibles)
(*Résultat à obtenir Pour un décalage à GAUCHE de 10 *)
%MW100=16#FC00
%MW101=16#FFFF
%MW102=16#FFFF
%MW103=16#FFFF
(*Résultat à obtenir Pour un décalage à DROITE de 10 *)
%MW100=16#FFFF
%MW101=16#FFFF
%MW102=16#FFFF
%MW103=16#003F
OK, compris c'est bon, c'est parceque on ne mettait pas les poids faibles / poids forts dans le même ordre
toi: W100-W101-W102-W103
moi: W103-W102-W101-W100
car, c'est une valeur codée sur 64 bits et reçue dans 4 mots via une requete READ_VAR donc les poids faible sont sur le premier mot
(*Corrigé Décalage à GAUCHE de 10 *)
%MW103 := SHL (%MW103,10) + SHR(%MW102,6);
%MW102 := SHL (%MW102,10) + SHR(%MW101,6);
%MW101 := SHL (%MW101,10) + SHR(%MW100,6);
%MW100 := SHL (%MW100,10) ;(*%MW100=16#FC00*)
(*Corrigé Décalage à DROITE de 10 *)
%MW100 := SHR (%MW100,10) + SHL(%MW101,6);
%MW101 := SHR (%MW101,10) + SHL(%MW102,6);
%MW102 := SHR (%MW102,10) + SHL(%MW103,6);
%MW103 := SHR (%MW103,10); (*W103=16#003F*)
Modifié en dernier par itasoft le 24 févr. 2025, 11:10, modifié 1 fois.
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Tuto Unity
En conclusion, tu n'avais pas completement tort, lol
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
