Pourquoi la valeur max et min est de 255 et -255
Résolu
rodel25
Messages postés
123
Statut
Membre
-
Stolous Messages postés 31 Statut Membre -
Stolous Messages postés 31 Statut Membre -
Bonjour,
Tout est dans le titre, je programme avec Arduino, langage qui se rapproche du C, j'utilise le robot 3pi qui dispose de 2 moteur 30:1.
Je me demandais pourquoi la valeur max et min sont 255 et -255, un rapport avec le binaire ?
Merci de bien vouloir m'éclairer :)
Tout est dans le titre, je programme avec Arduino, langage qui se rapproche du C, j'utilise le robot 3pi qui dispose de 2 moteur 30:1.
Je me demandais pourquoi la valeur max et min sont 255 et -255, un rapport avec le binaire ?
Merci de bien vouloir m'éclairer :)
A voir également:
- 8 bits 255
- Clé windows 8 - Guide
- Winrar 64 bits - Télécharger - Compression & Décompression
- 32 bits - Guide
- Mixcraft 8 - Télécharger - Création musicale
- Télécharger windows 7 32 bits usb - Télécharger - Systèmes d'exploitation
3 réponses
Je crois que c'est une question de mémoire dédié au type de variable.
int aura une plus faible mémoire qu'un float ...
Donc si tu veux que des nombres positifs, il te suffit de rajouter "unsigned" devant le type de variable
ex :
unsigned int var1;
les possibilités de nombre partent alors de zero jusqu'à 510 dans ton cas (255 x 2)(Tu as remarqué qu'il y avait la même étendu entre 0 -> 510 et -255 -> +255 )
En espérant t'avoir aidé :)
int aura une plus faible mémoire qu'un float ...
Donc si tu veux que des nombres positifs, il te suffit de rajouter "unsigned" devant le type de variable
ex :
unsigned int var1;
les possibilités de nombre partent alors de zero jusqu'à 510 dans ton cas (255 x 2)(Tu as remarqué qu'il y avait la même étendu entre 0 -> 510 et -255 -> +255 )
En espérant t'avoir aidé :)
Merci pour vos réponse, donc en gros sa dépend de la variable utilisée ?
Car j'ai une petite revue de projet et voici mon (tout) petit programme teste sous Arduino :
#include <OrangutanMotors.h>
void setup()
{
}
void loop()
{
int mot1 = 255
int mot2 = 255
set_motors(mot1, mot2)
}
Et je ne sais répondre a la question : pourquoi la valeur max est de 255 et min -255.
Y a t il un lien avec la précision du robot qui est de 8 bits ? c'est a dire 1111 1111 = 255 ?
Car j'ai une petite revue de projet et voici mon (tout) petit programme teste sous Arduino :
#include <OrangutanMotors.h>
void setup()
{
}
void loop()
{
int mot1 = 255
int mot2 = 255
set_motors(mot1, mot2)
}
Et je ne sais répondre a la question : pourquoi la valeur max est de 255 et min -255.
Y a t il un lien avec la précision du robot qui est de 8 bits ? c'est a dire 1111 1111 = 255 ?
Salut rodel25,
La réponse simple, c'est parce que c'est fixé ainsi par la documentation de set_motors() :
https://www.pololu.com/docs/0J18/7
Speed is a value between -255 and +255. The sign of speed determines the direction of the motor and the magnitude determines the speed. A speed of 0 results in full brake (full coast on the Orangutan X2) while a speed of 255 or -255 results in maximum speed forward or backward. If a speed greater than 255 is supplied, the motor speed will be set to 255. If a speed less than -255 is supplied, the motor speed will be set to -255.
Sinon, le type int peut accueillir des valeurs maximales et minimales bien supérieures. Les limites effectives dépendent du type de matériel arduino : https://www.arduino.cc/reference/en/language/variables/data-types/int/
Autrement de 0 à 255, tu as 256 positions possibles pour déterminer la vitesse en marche avant (ou arrière). C'est effectivement égal à 2 puissance 8, ou un octet (donc 8 bits).
Dal
La réponse simple, c'est parce que c'est fixé ainsi par la documentation de set_motors() :
https://www.pololu.com/docs/0J18/7
Speed is a value between -255 and +255. The sign of speed determines the direction of the motor and the magnitude determines the speed. A speed of 0 results in full brake (full coast on the Orangutan X2) while a speed of 255 or -255 results in maximum speed forward or backward. If a speed greater than 255 is supplied, the motor speed will be set to 255. If a speed less than -255 is supplied, the motor speed will be set to -255.
Sinon, le type int peut accueillir des valeurs maximales et minimales bien supérieures. Les limites effectives dépendent du type de matériel arduino : https://www.arduino.cc/reference/en/language/variables/data-types/int/
Autrement de 0 à 255, tu as 256 positions possibles pour déterminer la vitesse en marche avant (ou arrière). C'est effectivement égal à 2 puissance 8, ou un octet (donc 8 bits).
Dal
C'est en fair juste une question d'espace dans la mémoire,
car le nombre maximal que on peut stocker dans 4 octets est 255.
car le nombre maximal que on peut stocker dans 4 octets est 255.
Salut Stolus,
Un octet est un nombre composé de 8 bits, qui peut avoir 256 valeurs différentes (donc une valeur de 0 à 255) : de 00000000 à 11111111, 2 puissance 8, car chaque bit peut avoir deux valeurs uniquement.
Avec 4 octets, tu fais de de 00000000000000000000000000000000 à 11111111111111111111111111111111, et peux stocker 2 puissance 32 valeurs différentes, donc 4294967296. Soit de 0 à 4294967295.
De quoi parles-tu ?
Dal
Un octet est un nombre composé de 8 bits, qui peut avoir 256 valeurs différentes (donc une valeur de 0 à 255) : de 00000000 à 11111111, 2 puissance 8, car chaque bit peut avoir deux valeurs uniquement.
Avec 4 octets, tu fais de de 00000000000000000000000000000000 à 11111111111111111111111111111111, et peux stocker 2 puissance 32 valeurs différentes, donc 4294967296. Soit de 0 à 4294967295.
De quoi parles-tu ?
Dal
Etvpuis en signed ce n'est pas pas -255 255 mais -256 255.
D'ailleurs dans ton exemple il n'y a pas la même "étendu".