le compilateur bloque sur cette ligne : dec = dec + ((bin % 2)*(pow(2,cp))); pourquoi ??? merci d'avance.
Parceque tu n'as pas le droit de faire un % sur un double...
Utilise des long à la place... Ou une convertion (long)bin % 2
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits vers la gauche (cp multiplications par 2) C'est plus efficace que ces deux opérations qui sont monstrueuses en terme de calcul...
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Christophe Schneider wrote:
le compilateur bloque sur cette ligne : dec = dec + ((bin %
2)*(pow(2,cp)));
pourquoi ???
merci d'avance.
Parceque tu n'as pas le droit de faire un % sur un double...
Utilise des long à la place... Ou une convertion (long)bin % 2
Ceci dit, je pense que %2 se fait plus simplement avec
(bin & 1) //ET binaire
et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits
vers la gauche (cp multiplications par 2)
C'est plus efficace que ces deux opérations qui sont monstrueuses en
terme de calcul...
--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/
le compilateur bloque sur cette ligne : dec = dec + ((bin % 2)*(pow(2,cp))); pourquoi ??? merci d'avance.
Parceque tu n'as pas le droit de faire un % sur un double...
Utilise des long à la place... Ou une convertion (long)bin % 2
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits vers la gauche (cp multiplications par 2) C'est plus efficace que ces deux opérations qui sont monstrueuses en terme de calcul...
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
"Benoit Rousseau" a écrit dans le message de news:3fce235e$0$5476$
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire
Plus simplement ? En tout cas, pas pour la qualité du code et probablement pas pour le code généré ou pour la vitesse...
Mauvaise idée donc.
et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits vers la gauche (cp multiplications par 2)
Ce sera possible seulement si il n'utilise pas des double...
C'est plus efficace que ces deux opérations qui sont monstrueuses en terme de calcul...
De toute façon, le programme original n'est vraiment pas fait de la meilleure manière (et savoir ce qu'on peut faire demande qu'on connaisse l'énoncé exact, ça semble bien être un travail d'école).
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
"Benoit Rousseau" <not.provided@no.spam> a écrit dans le message de
news:3fce235e$0$5476$ba620e4c@reader3.news.skynet.be...
Ceci dit, je pense que %2 se fait plus simplement avec
(bin & 1) //ET binaire
Plus simplement ? En tout cas, pas pour la qualité du code et
probablement pas pour le code généré ou pour la vitesse...
Mauvaise idée donc.
et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp
bits vers la gauche (cp multiplications par 2)
Ce sera possible seulement si il n'utilise pas des double...
C'est plus efficace que ces deux opérations qui sont monstrueuses en
terme de calcul...
De toute façon, le programme original n'est vraiment pas fait de la
meilleure manière (et savoir ce qu'on peut faire demande qu'on
connaisse l'énoncé exact, ça semble bien être un travail d'école).
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
"Benoit Rousseau" a écrit dans le message de news:3fce235e$0$5476$
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire
Plus simplement ? En tout cas, pas pour la qualité du code et probablement pas pour le code généré ou pour la vitesse...
Mauvaise idée donc.
et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits vers la gauche (cp multiplications par 2)
Ce sera possible seulement si il n'utilise pas des double...
C'est plus efficace que ces deux opérations qui sont monstrueuses en terme de calcul...
De toute façon, le programme original n'est vraiment pas fait de la meilleure manière (et savoir ce qu'on peut faire demande qu'on connaisse l'énoncé exact, ça semble bien être un travail d'école).
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Christophe
le compilateur bloque sur cette ligne : dec = dec + ((bin % 2)*(pow(2,cp)));
Parceque tu n'as pas le droit de faire un % sur un double... Utilise des long à la place... Ou une convertion (long)bin % 2
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits vers la gauche (cp multiplications par 2) C'est plus efficace que ces deux opérations qui sont monstrueuses en terme de calcul...
ok bien recu. il va falloir que je décripte. merci a+
le compilateur bloque sur cette ligne : dec = dec + ((bin %
2)*(pow(2,cp)));
Parceque tu n'as pas le droit de faire un % sur un double...
Utilise des long à la place... Ou une convertion (long)bin % 2
Ceci dit, je pense que %2 se fait plus simplement avec
(bin & 1) //ET binaire
et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits
vers la gauche (cp multiplications par 2)
C'est plus efficace que ces deux opérations qui sont monstrueuses en
terme de calcul...
ok bien recu.
il va falloir que je décripte.
merci a+
le compilateur bloque sur cette ligne : dec = dec + ((bin % 2)*(pow(2,cp)));
Parceque tu n'as pas le droit de faire un % sur un double... Utilise des long à la place... Ou une convertion (long)bin % 2
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits vers la gauche (cp multiplications par 2) C'est plus efficace que ces deux opérations qui sont monstrueuses en terme de calcul...
ok bien recu. il va falloir que je décripte. merci a+
Michel Michaud
"Christophe Schneider" a écrit dans le message de news:3fce1a63$0$28682$
le compilateur bloque sur cette ligne : dec = dec + ((bin %
Il bloque ou bien il donne un message d'erreur ? Si c'est un message, je me demande bien pourquoi tu n'as pas pu le comprendre. En général, quand ça arrive et qu'on pose la question ici, on donne le message qu'on a reçu...
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
"Christophe Schneider" <chrschneider@free.fr> a écrit dans le message de
news:3fce1a63$0$28682$626a54ce@news.free.fr...
le compilateur bloque sur cette ligne : dec = dec + ((bin %
Il bloque ou bien il donne un message d'erreur ? Si c'est un
message, je me demande bien pourquoi tu n'as pas pu le comprendre.
En général, quand ça arrive et qu'on pose la question ici, on
donne le message qu'on a reçu...
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
"Christophe Schneider" a écrit dans le message de news:3fce1a63$0$28682$
le compilateur bloque sur cette ligne : dec = dec + ((bin %
Il bloque ou bien il donne un message d'erreur ? Si c'est un message, je me demande bien pourquoi tu n'as pas pu le comprendre. En général, quand ça arrive et qu'on pose la question ici, on donne le message qu'on a reçu...
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Christophe
ca ne parait pas necessaire, puisque je me sert un peu de pow() sans jamais déclarer. merci a+
"PHAM Minh Quang" a écrit dans le message de news:bql8mt$og8$
pow(..) a-t-elle été déclarée ?
ca ne parait pas necessaire, puisque je me sert un peu de pow() sans jamais
déclarer.
merci a+
"PHAM Minh Quang" <dante@nerim.net> a écrit dans le message de
news:bql8mt$og8$1@biggoron.nerim.net...
ca ne parait pas necessaire, puisque je me sert un peu de pow() sans jamais déclarer. merci a+
"PHAM Minh Quang" a écrit dans le message de news:bql8mt$og8$
pow(..) a-t-elle été déclarée ?
Christophe
C'étaient bien les doubles qui ne passaient pas. Question relative à ta réponse, j'ai dev-c++ mais celui-ci ne donne jamais aucun message, il se contente d'amener le curseur sur la ligne erronée : est-il mal paramètre...???
merci un débutant :o/
"Michel Michaud" a écrit dans le message de news:HMpzb.10794$
"Christophe Schneider" a écrit dans le message de news:3fce1a63$0$28682$
le compilateur bloque sur cette ligne : dec = dec + ((bin %
Il bloque ou bien il donne un message d'erreur ? Si c'est un message, je me demande bien pourquoi tu n'as pas pu le comprendre. En général, quand ça arrive et qu'on pose la question ici, on donne le message qu'on a reçu...
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
C'étaient bien les doubles qui ne passaient pas.
Question relative à ta réponse, j'ai dev-c++ mais celui-ci ne donne jamais
aucun message, il se contente d'amener le curseur sur la ligne erronée :
est-il mal paramètre...???
merci
un débutant :o/
"Michel Michaud" <mm@gdzid.com> a écrit dans le message de
news:HMpzb.10794$yd.1395575@news20.bellglobal.com...
"Christophe Schneider" <chrschneider@free.fr> a écrit dans le message de
news:3fce1a63$0$28682$626a54ce@news.free.fr...
le compilateur bloque sur cette ligne : dec = dec + ((bin %
Il bloque ou bien il donne un message d'erreur ? Si c'est un
message, je me demande bien pourquoi tu n'as pas pu le comprendre.
En général, quand ça arrive et qu'on pose la question ici, on
donne le message qu'on a reçu...
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
C'étaient bien les doubles qui ne passaient pas. Question relative à ta réponse, j'ai dev-c++ mais celui-ci ne donne jamais aucun message, il se contente d'amener le curseur sur la ligne erronée : est-il mal paramètre...???
merci un débutant :o/
"Michel Michaud" a écrit dans le message de news:HMpzb.10794$
"Christophe Schneider" a écrit dans le message de news:3fce1a63$0$28682$
le compilateur bloque sur cette ligne : dec = dec + ((bin %
Il bloque ou bien il donne un message d'erreur ? Si c'est un message, je me demande bien pourquoi tu n'as pas pu le comprendre. En général, quand ça arrive et qu'on pose la question ici, on donne le message qu'on a reçu...
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Fabien LE LEZ
On Wed, 3 Dec 2003 19:18:27 +0100, "Christophe" wrote:
ca ne parait pas necessaire
Si. Toutes les fonctions doivent être déclarées en C++ (généralement en #incluant des headers). PS : merci de répondre à l'endroit -- cf <http://www.giromini.org/usenet-fr/repondre.html> -- ;-)
On Wed, 3 Dec 2003 19:18:27 +0100, "Christophe" <chrschneider@free.fr>
wrote:
ca ne parait pas necessaire
Si. Toutes les fonctions doivent être déclarées en C++ (généralement
en #incluant des headers).
PS : merci de répondre à l'endroit -- cf
<http://www.giromini.org/usenet-fr/repondre.html>
--
;-)
On Wed, 3 Dec 2003 19:18:27 +0100, "Christophe" wrote:
ca ne parait pas necessaire
Si. Toutes les fonctions doivent être déclarées en C++ (généralement en #incluant des headers). PS : merci de répondre à l'endroit -- cf <http://www.giromini.org/usenet-fr/repondre.html> -- ;-)
Benoit Rousseau
Michel Michaud wrote:
"Benoit Rousseau" a écrit dans le message de news:3fce235e$0$5476$
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire
Plus simplement ? En tout cas, pas pour la qualité du code et probablement pas pour le code généré ou pour la vitesse...
Bof... Le ET-logique est une fonction asm sur x86 (AND), alors je ne pense pas qu'il y ait beaucoup de code généré ou qu'il y ait des problèmes de vitesses. Un ET-logique est l'opération de base d'un half-adder... Si elle n'est pas codée en dure, je me demande à quoi m'ont servi mes cours de hardware... L'opération est tellement courante qu'elle doit être implantée sur les autres architectures...
et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits vers la gauche (cp multiplications par 2)
Ce sera possible seulement si il n'utilise pas des double...
L'algorithme présenté n'a pas besoin de doubles, mais de long...
Pour revenir à la demande de clarification de Chritophe :
(a & b) est l'opérateur ET-logique : il effectue un & sur chacun des bits de a et b. Le "premier" bit de "a" détermine la parité de a. En "binaire" 0010 est pair (=2) et 0101 est impaire (=5).
(a << b) effectue un décalage de b bits de a vers la droite. Un décalage de 1 bit correspond à un multiplication par 2, n bits 2^n : 0010 << 2 = 1000 (!attention aux débordements)
(a >> b) correspond à un décalage de b bits de a vers la gauche (division par une puissance de 2).
Les trois opérations % * et / étant assez gourmandes, ces altérnatives étaient utilisées quand le temps de calcul importait.
-------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Michel Michaud wrote:
"Benoit Rousseau" <not.provided@no.spam> a écrit dans le message de
news:3fce235e$0$5476$ba620e4c@reader3.news.skynet.be...
Ceci dit, je pense que %2 se fait plus simplement avec
(bin & 1) //ET binaire
Plus simplement ? En tout cas, pas pour la qualité du code et
probablement pas pour le code généré ou pour la vitesse...
Bof... Le ET-logique est une fonction asm sur x86 (AND), alors je ne
pense pas qu'il y ait beaucoup de code généré ou qu'il y ait des
problèmes de vitesses.
Un ET-logique est l'opération de base d'un half-adder... Si elle n'est
pas codée en dure, je me demande à quoi m'ont servi mes cours de hardware...
L'opération est tellement courante qu'elle doit être implantée sur les
autres architectures...
et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp
bits vers la gauche (cp multiplications par 2)
Ce sera possible seulement si il n'utilise pas des double...
L'algorithme présenté n'a pas besoin de doubles, mais de long...
Pour revenir à la demande de clarification de Chritophe :
(a & b) est l'opérateur ET-logique : il effectue un & sur chacun des
bits de a et b. Le "premier" bit de "a" détermine la parité de a.
En "binaire" 0010 est pair (=2) et 0101 est impaire (=5).
(a << b) effectue un décalage de b bits de a vers la droite. Un décalage
de 1 bit correspond à un multiplication par 2, n bits 2^n :
0010 << 2 = 1000 (!attention aux débordements)
(a >> b) correspond à un décalage de b bits de a vers la gauche
(division par une puissance de 2).
Les trois opérations % * et / étant assez gourmandes, ces altérnatives
étaient utilisées quand le temps de calcul importait.
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/
"Benoit Rousseau" a écrit dans le message de news:3fce235e$0$5476$
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire
Plus simplement ? En tout cas, pas pour la qualité du code et probablement pas pour le code généré ou pour la vitesse...
Bof... Le ET-logique est une fonction asm sur x86 (AND), alors je ne pense pas qu'il y ait beaucoup de code généré ou qu'il y ait des problèmes de vitesses. Un ET-logique est l'opération de base d'un half-adder... Si elle n'est pas codée en dure, je me demande à quoi m'ont servi mes cours de hardware... L'opération est tellement courante qu'elle doit être implantée sur les autres architectures...
et "a*pow(2, cp)" peut être remplacé par (a << cp); décallage de cp bits vers la gauche (cp multiplications par 2)
Ce sera possible seulement si il n'utilise pas des double...
L'algorithme présenté n'a pas besoin de doubles, mais de long...
Pour revenir à la demande de clarification de Chritophe :
(a & b) est l'opérateur ET-logique : il effectue un & sur chacun des bits de a et b. Le "premier" bit de "a" détermine la parité de a. En "binaire" 0010 est pair (=2) et 0101 est impaire (=5).
(a << b) effectue un décalage de b bits de a vers la droite. Un décalage de 1 bit correspond à un multiplication par 2, n bits 2^n : 0010 << 2 = 1000 (!attention aux débordements)
(a >> b) correspond à un décalage de b bits de a vers la gauche (division par une puissance de 2).
Les trois opérations % * et / étant assez gourmandes, ces altérnatives étaient utilisées quand le temps de calcul importait.
-------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Loïc Joly
Benoit Rousseau wrote:
Michel Michaud wrote:
"Benoit Rousseau" a écrit dans le message de news:3fce235e$0$5476$
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire
Plus simplement ? En tout cas, pas pour la qualité du code et probablement pas pour le code généré ou pour la vitesse...
Bof... Le ET-logique est une fonction asm sur x86 (AND), alors je ne pense pas qu'il y ait beaucoup de code généré ou qu'il y ait des problèmes de vitesses. Un ET-logique est l'opération de base d'un half-adder... Si elle n'est pas codée en dure, je me demande à quoi m'ont servi mes cours de hardware... L'opération est tellement courante qu'elle doit être implantée sur les autres architectures...
Je pense que ce que voulait dire Michel, c'est que même si tu n'écris pas un & dans le programme, le compilateur va probablement quand même mettre un AND dans le code généré, ou faire encore autre chose plus rapide.
-- Loïc
Benoit Rousseau wrote:
Michel Michaud wrote:
"Benoit Rousseau" <not.provided@no.spam> a écrit dans le message de
news:3fce235e$0$5476$ba620e4c@reader3.news.skynet.be...
Ceci dit, je pense que %2 se fait plus simplement avec
(bin & 1) //ET binaire
Plus simplement ? En tout cas, pas pour la qualité du code et
probablement pas pour le code généré ou pour la vitesse...
Bof... Le ET-logique est une fonction asm sur x86 (AND), alors je ne
pense pas qu'il y ait beaucoup de code généré ou qu'il y ait des
problèmes de vitesses.
Un ET-logique est l'opération de base d'un half-adder... Si elle n'est
pas codée en dure, je me demande à quoi m'ont servi mes cours de
hardware...
L'opération est tellement courante qu'elle doit être implantée sur les
autres architectures...
Je pense que ce que voulait dire Michel, c'est que même si tu n'écris
pas un & dans le programme, le compilateur va probablement quand même
mettre un AND dans le code généré, ou faire encore autre chose plus rapide.
"Benoit Rousseau" a écrit dans le message de news:3fce235e$0$5476$
Ceci dit, je pense que %2 se fait plus simplement avec (bin & 1) //ET binaire
Plus simplement ? En tout cas, pas pour la qualité du code et probablement pas pour le code généré ou pour la vitesse...
Bof... Le ET-logique est une fonction asm sur x86 (AND), alors je ne pense pas qu'il y ait beaucoup de code généré ou qu'il y ait des problèmes de vitesses. Un ET-logique est l'opération de base d'un half-adder... Si elle n'est pas codée en dure, je me demande à quoi m'ont servi mes cours de hardware... L'opération est tellement courante qu'elle doit être implantée sur les autres architectures...
Je pense que ce que voulait dire Michel, c'est que même si tu n'écris pas un & dans le programme, le compilateur va probablement quand même mettre un AND dans le code généré, ou faire encore autre chose plus rapide.