écriture d'un nombre sur 3 octets
Résolu/Fermé
Mr_Kiyoshi
Messages postés
28
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
18 juin 2014
-
Modifié par Mr_Kiyoshi le 16/06/2014 à 13:29
Mr_Kiyoshi Messages postés 28 Date d'inscription lundi 16 juin 2014 Statut Membre Dernière intervention 18 juin 2014 - 18 juin 2014 à 13:23
Mr_Kiyoshi Messages postés 28 Date d'inscription lundi 16 juin 2014 Statut Membre Dernière intervention 18 juin 2014 - 18 juin 2014 à 13:23
A voir également:
- écriture d'un nombre sur 3 octets
- Écriture facebook - Guide
- Écriture miroir - Guide
- Ecriture en gras - Guide
- Picasa 3 - Télécharger - Albums photo
- Ecriture insta - Guide
4 réponses
EGP-Swyx
Messages postés
6664
Date d'inscription
dimanche 18 mars 2012
Statut
Contributeur
Dernière intervention
7 janvier 2019
625
16 juin 2014 à 13:34
16 juin 2014 à 13:34
Pour écrire un nombre qui va de 0 à 999, t'as besoins de moins de 3 octets.
1024 = 2^10. donc tu as besoin de 10 bits pas plus.
décris moi le truc et je te dirais si t'as pas moyen de faire plus simple. parce que je ne vois pas l'intérêt de ta technique. (passer 020 en 0 2 0)
1024 = 2^10. donc tu as besoin de 10 bits pas plus.
décris moi le truc et je te dirais si t'as pas moyen de faire plus simple. parce que je ne vois pas l'intérêt de ta technique. (passer 020 en 0 2 0)
Merci pour vos réponses,
Enfet c est pour un projet sur un moteur j'obtiens une vitesse en tour/min et je doit l'écrire dans une mémoire commune sur 3 adresse pour qu'en suite une autre carte viens lire ces trois adresses et l'affichera. Par exemple si j'ai une vitesse de 20 tr/min écrira 0 à une adresse 2 à la deuxième et 0 à la troisième
Enfet c est pour un projet sur un moteur j'obtiens une vitesse en tour/min et je doit l'écrire dans une mémoire commune sur 3 adresse pour qu'en suite une autre carte viens lire ces trois adresses et l'affichera. Par exemple si j'ai une vitesse de 20 tr/min écrira 0 à une adresse 2 à la deuxième et 0 à la troisième
EGP-Swyx
Messages postés
6664
Date d'inscription
dimanche 18 mars 2012
Statut
Contributeur
Dernière intervention
7 janvier 2019
625
16 juin 2014 à 15:40
16 juin 2014 à 15:40
Ah... dans ce cas... te prends pas la tête.
Si c'est comme en C, et que ton nombre est un int.
Si tu divise un int/int tu sors un int
Donc tu copie ça avec conversion dans ton lagage et tu test
------------------------------
Vitesse = Vitesse connue
nAdresse1 = Centaines
nAdresse2 = Dizaines
nAdresse3 = Unités
-------------------------------
Exemple pouur 120
0 : *DEBUT*
1 : nA1 = 120 / 100 // = 1
2 : V = 120 - 1*100 // = 20
3 : nA2 = 20 / 10 // = 2
4 : nA3 = 20 - 2*10 // = 0
5 : *FIN*
V = 20
nA1 = 1
nA2 = 2
nA3 = 0
Si c'est comme en C, et que ton nombre est un int.
Si tu divise un int/int tu sors un int
Donc tu copie ça avec conversion dans ton lagage et tu test
------------------------------
Vitesse = Vitesse connue
nAdresse1 = Centaines
nAdresse2 = Dizaines
nAdresse3 = Unités
-------------------------------
*************
nAdresse1 = Vitesse / 100
Vitesse = Vitesse - nAdresse1 * 100
nAdresse2 = Vitesse / 10
nAdresse3 = Vitesse - nAdresse2 * 10
Exemple pouur 120
0 : *DEBUT*
1 : nA1 = 120 / 100 // = 1
2 : V = 120 - 1*100 // = 20
3 : nA2 = 20 / 10 // = 2
4 : nA3 = 20 - 2*10 // = 0
5 : *FIN*
V = 20
nA1 = 1
nA2 = 2
nA3 = 0
Mr_Kiyoshi
>
EGP-Swyx
Messages postés
6664
Date d'inscription
dimanche 18 mars 2012
Statut
Contributeur
Dernière intervention
7 janvier 2019
16 juin 2014 à 16:01
16 juin 2014 à 16:01
Merci beaucoup pour ta réponse détaillé ça devrait le faire
Mr_Kiyoshi
>
EGP-Swyx
Messages postés
6664
Date d'inscription
dimanche 18 mars 2012
Statut
Contributeur
Dernière intervention
7 janvier 2019
16 juin 2014 à 16:01
16 juin 2014 à 16:01
Merci beaucoup pour ta réponse détaillé ça devrait le faire
EGP-Swyx
Messages postés
6664
Date d'inscription
dimanche 18 mars 2012
Statut
Contributeur
Dernière intervention
7 janvier 2019
625
Modifié par EGP-Swyx le 16/06/2014 à 16:03
Modifié par EGP-Swyx le 16/06/2014 à 16:03
Mais de rien =)
Il ne reste qu'à espérer que le langage que tu utilise ne cast pas le résultat d'une division :/
Il ne reste qu'à espérer que le langage que tu utilise ne cast pas le résultat d'une division :/
Mr_Kiyoshi
>
EGP-Swyx
Messages postés
6664
Date d'inscription
dimanche 18 mars 2012
Statut
Contributeur
Dernière intervention
7 janvier 2019
16 juin 2014 à 16:04
16 juin 2014 à 16:04
Non t'inquiète ça va le faire
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
17 juin 2014 à 10:34
17 juin 2014 à 10:34
Salut Mr_Kiyoshi,
Si tu as un entier (un
Comme ce que tu veux, ce sont des char, le plus simple est d'utiliser sprintf, et d'utiliser les spécificateurs te permettant de combler à gauche par des zéros.
donne des char, comme tu le souhaites :
Dal
Si tu as un entier (un
inten C), et que tu veux obtenir 3 caractères (des
charen C), le fait d'effectuer des divisions va te donner des entiers.
Comme ce que tu veux, ce sont des char, le plus simple est d'utiliser sprintf, et d'utiliser les spécificateurs te permettant de combler à gauche par des zéros.
#include <stdio.h> #include <stdlib.h> int main(void) { int tours_min = 20; char st_toursmin[4]; if ( (tours_min > 999) || (tours_min < 0) ) { printf("Erreur tours_min n'a pas une valeur correcte\n"); return EXIT_FAILURE; } else { snprintf(st_toursmin, 4, "%03d", tours_min); printf("Premier digit : %c\n", st_toursmin[0]); printf("Deuxième digit : %c\n", st_toursmin[1]); printf("Troisième digit : %c\n", st_toursmin[2]); } return 0; }
donne des char, comme tu le souhaites :
Premier digit : 0
Deuxième digit : 2
Troisième digit : 0
Dal
Mr_Kiyoshi
Messages postés
28
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
18 juin 2014
17 juin 2014 à 12:49
17 juin 2014 à 12:49
est ce que si j'écris dans la mémoire st_toursmin[0] je vais écrire '1' si on à 120 tour/min?
Mr_Kiyoshi
Messages postés
28
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
18 juin 2014
17 juin 2014 à 13:04
17 juin 2014 à 13:04
et à quoi sert la ligne 13 ?
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 17/06/2014 à 14:18
Modifié par [Dal] le 17/06/2014 à 14:18
est ce que si j'écris dans la mémoire st_toursmin[0] je vais écrire '1' si on à 120 tour/min?
Cela va écrire la premier caractère contenu dans la chaîne de caractères st_toursmin, c'est à dire le caractère '1' ou 49 en ASCII, si la chaîne contient "120".
et à quoi sert la ligne 13 ?
snprintf est une fonction du C standard, qui formate une chaîne avec des spécificateurs de format, à la manière de printf, mais qui, au lieu d'envoyer le résultat formaté vers l'écran, envoie le résultat vers une variable de type
Pour les spécificateurs, tu peux les consulter sur cette documentation de printf, puisque ce sont les mêmes.
Dal
Cela va écrire la premier caractère contenu dans la chaîne de caractères st_toursmin, c'est à dire le caractère '1' ou 49 en ASCII, si la chaîne contient "120".
et à quoi sert la ligne 13 ?
snprintf est une fonction du C standard, qui formate une chaîne avec des spécificateurs de format, à la manière de printf, mais qui, au lieu d'envoyer le résultat formaté vers l'écran, envoie le résultat vers une variable de type
* char(chaîne de caractère en C). En outre, snprintf permet de spécifier la taille maximale du tampon destiné à accueillir la chaîne C, de façon à éviter les débordements de mémoire.
Pour les spécificateurs, tu peux les consulter sur cette documentation de printf, puisque ce sont les mêmes.
Dal
EGP-Swyx
Messages postés
6664
Date d'inscription
dimanche 18 mars 2012
Statut
Contributeur
Dernière intervention
7 janvier 2019
625
17 juin 2014 à 14:22
17 juin 2014 à 14:22
je ne connaissais pas sprintf mais en effet c'est vraiment très puissant!
Mr_Kiyoshi
Messages postés
28
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
18 juin 2014
17 juin 2014 à 14:27
17 juin 2014 à 14:27
ok merci à vous je vais faire comme ça
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
16 juin 2014 à 14:02
16 juin 2014 à 14:02
Bonjour,
Le plus simple est de faire 3 boucles variant de '0' à '9'.
Et tu affiches chacun des éléments : printf("%c%c%c\n", i, j, k);
Cdlt,
Le plus simple est de faire 3 boucles variant de '0' à '9'.
Et tu affiches chacun des éléments : printf("%c%c%c\n", i, j, k);
Cdlt,
Mr_Kiyoshi
Messages postés
28
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
18 juin 2014
16 juin 2014 à 15:30
16 juin 2014 à 15:30
ça me permettra d'écrire le nombre sur 3 adresse?