le 11-15-2013 01:40 AM
bonsoir,
J'aimerai bien savoir comment je peux convertir un 3*8bit en 24bit
ci-joint est mon programme LabVIEW
le but est d obtenir des valeurs sur LabVIEW de 24 bit et jusqu'à présent j ai juste réussir a diviser ma valeur d'entrée de 32 bit en 3 valeurs sortante de 8 bit et présentement je ne sais pas comment quitter de ces 3* 8 bit pour obtenir une valeur sortante de 24 bit.
ma valeur de sortie sur les pièces jointes est de 32 bit et non de 24 bit comme demandee
j'ai besoin d'aide
merci d avance.
le 11-15-2013 02:56 AM
Le format 24 bits n'est pas un standard au même titre que le sont les formats 8, 16, 32 et 64 bits.
Prière de décrire précisément la fonction que vous désirez implémenter et son but final. Dans certains cas, un tableau contenant 24 booléens pourrait être une solution élégante.
le 11-15-2013 05:31 AM
le but est ici de faire une operation(addition, substration.....) peut importe laquelle, mais la valeur a l entree et de sortie doivent etres de 24 bit . Labview n a que 8bit,16bit,
32bit et 64bit signed et unsigned mais pas 24bit.
exemple d operation: 10 (24bit) - 9 (24bit) = 1 (24bit)
le 11-18-2013 07:14 AM
Comme déjà dit, le format 24 bits n'existe pas. Le recours à un format 32 bits pour traiter les données en les limitant à 24 bits (nécessite un peu de code) ne vous convient-il pas ?
S'agit-il d'un problème "scolaire" ? Si oui quelle est sa description exacte ?
Ou cela est-il lié à un quelconque hardware ?
le 11-20-2013 09:00 AM
Boujour,
j ai aussi remarque que Labview n avait pas de 24 bit, et Le recours à un format 32 bits pour traiter les données en les limitant à 24 bits me convient!
comment peut-on ecrire ce code.
il s agit d un labor et je dois simuler sur labview un code donc les entree et sortie numerique doivent etre 24 bit.
le 11-21-2013 12:44 AM
Si le format 32 bits ne peut pas être utilisé, une solution est de créer un cluster avec 24 booléens ou un tableau de booléens.
PS : Pour obtenir des réponses plus précises, je vous invite à détailler davantage vos questions.
le 11-21-2013 03:53 AM
bonjour,
j ne sais pas ce que j peux encore vous dire , le devoir est de faire une operation ci dessous vous verrez un extrait d operation avec les 8 bit integer (-128 to 127) avec sa ma valeur d entree que j ai appeler input ne peut que prendre les valeurs de (-128 to 127) parceque j ai utlisee un 8 bit integer et quand j mets a l entree une valeur comme 128 sa m affiche 127 parceque j ai utilisee 8 bit interger.
la meme chose j aimerai faire avec une valeur de 24 bit interger (-8388608 to 83886007). enfait j avais pensee qu en convertissant un 32 bit en 3fois 8 bit (8 bit + 8 bit+ 8 bit = 24 bit), j pouvais obtenir un 24 bit en les additionnant. mais je ne savais pas comment additionner les 8 bit , j ai essaye avec les And boolean mais sa n a pas marche.
j ne sais plus quelle methode utiliser .
merci
le 11-21-2013 11:00 AM
La séparation d'un entier en octets se fait le plus simplement avec la fonction Split Number et l'inverse avec Join Numbers.
11-21-2013 11:38 AM - modifié 11-21-2013 11:40 AM
La fonction Join Numbers fait automatiquement ce que vous devez faire manuellement si vous voulez combiner les octets par une addition ou un ET logique; à savoir décaler les octets vers la droite selon leur emplacement.
Prenons un nombre de 24 bits :
23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
Si on le découpe en 3 octets, ceux-ci seront les suivants :
23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
Pour le reformer à partir de ces 3 octets, on ne peut pas simplement faire une addition ou un ET logique des octets mais il faut tenir compte de leur emplacement dans le nombre de 24 bits.
Un exemple très simple avec un nombre décimal de 3 chiffres (532) pour éclaircir les propos.
Si on le décompose dans ses 3 chiffres, on ne peut pas simplement additionner ceux-ci pour le recomposer.
En effet, 5 + 3 + 2 = 10 et non 532.
C'est tout naturellement qu'on va multiplier chacun des chiffres par la puissance de dix de sa position dans le nombre (unités, dizaines, centaines).
5*10^2 = 500
3*10^1 = 30
2*10^0 = 2
Revenons à nos trois octets. La situation est exactement la même sauf que dans ce cas il s'agit non pas d'une représentation décimale mais binaire. Il faut donc multiplier les octets non par des puissances de 10 mais de 2. L'octet bleu sera donc multiplié par 2^8 et le rouge par 2^16 avant l'addition ou le ET logique (ce qui revient au même).
Avec la représentation binaire, une solution alternative à la multiplication est d'utiliser un Logical Shift pour décaler les octets vers la droite.
Que les octets soient multipliés ou déplacés vers la droite revient au même.
Dans les deux cas il est toutefois indispensable de convertir les octets dans le format final (dans ce cas 32 bits) AVANT ces opérations sans quoi le résultat ne sera pas attendu.
Plus clair ?
11-25-2013 03:07 AM - modifié 11-25-2013 03:09 AM
bonjour
tout d abord merci pour l aide, j ai suivi vos conseil et aussi essaye de faire un programme sur labview
vous verrez ci -jointe un exemple , j aimerai votre avis sur mon programme et aussi savoir si ma valeur final est exactement 24 bit .
s il vous plait j ai besoin d aide.
merci