Qu'est signifier 1L dans le langage C
Gaer
-
Gaer1981 Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Gaer1981 Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un petit problème, ça a l'air de rien mais je viens d'y passer des heures en cherchant. Je dois comprendre un code en langage c et je suis bloqué sur un élement. J'ai une fonction
static long mantexp(double val, int *exp, int nbits)
{
long mant, max = 1L << nbits;
if ((mant = (long)floor(max * frexp(val, exp) + 0.5)) == max) {
mant >>= 1;
++ *exp;
}
if (*exp < -128) /* NUMBER IS ZERO, MANTISSA IS UNDEFINED */
*exp = -128;
else if (*exp > 127) { /* NUMBER IS MAXIMUM AVAILABLE */
*exp = 127;
mant = max - 1;
}
return (mant);
Je n'arrive pas à comprendre la ligne suivante:
long mant, max = 1L << nbits;
Ma question est: le 1L signifier quoi? la variable max=1L est initialisé à quelle valeur?
Cette fonction est tiré d'un code qui fait les conversions des chiffres flottants reçu d'un microcontroleur en formant de représentation PC .
Merci beaucoup de votre aide, la compréhension de ce détail va me débloquer.
J'ai un petit problème, ça a l'air de rien mais je viens d'y passer des heures en cherchant. Je dois comprendre un code en langage c et je suis bloqué sur un élement. J'ai une fonction
static long mantexp(double val, int *exp, int nbits)
{
long mant, max = 1L << nbits;
if ((mant = (long)floor(max * frexp(val, exp) + 0.5)) == max) {
mant >>= 1;
++ *exp;
}
if (*exp < -128) /* NUMBER IS ZERO, MANTISSA IS UNDEFINED */
*exp = -128;
else if (*exp > 127) { /* NUMBER IS MAXIMUM AVAILABLE */
*exp = 127;
mant = max - 1;
}
return (mant);
Je n'arrive pas à comprendre la ligne suivante:
long mant, max = 1L << nbits;
Ma question est: le 1L signifier quoi? la variable max=1L est initialisé à quelle valeur?
Cette fonction est tiré d'un code qui fait les conversions des chiffres flottants reçu d'un microcontroleur en formant de représentation PC .
Merci beaucoup de votre aide, la compréhension de ce détail va me débloquer.
L signifie que 1 c'est une constante de type Long
Plutôt 1L signifie que 1 c'est une constante de type Long
Juste une précision une autre. Donc pour dans le PC cette constante est sur 32bits et vaut 1. C'est à dire il a la forme de :
00000000 00000000 00000000 00000001 en binaire. donc si nbits=8 on aura :
00000000 00000000 00000001 00000000
Ai-je bien compris ?
Merci