Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1094 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Le binaire et les puissances pour les pro

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Le binaire et les puissances pour les pro

n°886294
viewtiful2
Posté le 30-10-2004 à 09:49:05  profilanswer
 

Bonjour j'aimerais une aide pour réaliser ceci :  
 
il faudrait exprimer cette expression avec des opérateurs du binaire seulement :
 
(2^(n-1)-1)-(2^(k)-1)
ex : pour n=6 et k=3 cela donne 2^5-1 - 2^3-1 = 15-7=8
 
voici mon algo qui est correct juste pour l'exemple :
 
 
int puissbin(int n,int k) //si k>=n+1 ca brule
{
int x=1,i;
 while (i<n-2)
 {
 i++;
 x<<=1;
 }
 while (i<k)
 {
 x&=0;
 }
return x;  
}
 
ça marche pour quelques exemples c'est tout !
qu'elqu'un pourrais m'aider ?
 
MERCI

mood
Publicité
Posté le 30-10-2004 à 09:49:05  profilanswer
 

n°886297
torpe23
Posté le 30-10-2004 à 09:58:11  profilanswer
 

t'as pas initialisé i.

n°886298
WhatDe
Posté le 30-10-2004 à 10:06:25  profilanswer
 

Fatal comme erreur. J'ai mis une heure avant de la trouver quand je l'ai faite  [:whatde]

n°886320
viewtiful2
Posté le 30-10-2004 à 11:00:00  profilanswer
 

int puissbin(int n,int k) /*si l'ecart entre n et k >2 c mal*/
{  
int x=1,i=0;  
 while (i<n-2)  
 {  
 i++;  
 x<<=1;  
 }  
 while (i<k)  
 {  
 x&=0;  
 }  
return x;  
}
 
EN mettant i a 0 ausi, sa marche pour l'exemple et quand n et k ont un écart <2.

n°886326
pascal_
Posté le 30-10-2004 à 11:13:30  profilanswer
 

Code :
  1. while (i<k) 
  2. x&=0; 
  3. }


 
est une boucle infini. (edit: surtout dans le cas ou i est < à k avant la boucle, c-a-d quand n-k > 2 :o )
 
et x&=0; pour moi ça fait toujours zéro  :heink:


Message édité par pascal_ le 30-10-2004 à 11:15:14
n°886334
cris56
Posté le 30-10-2004 à 11:34:43  profilanswer
 

WhatDe a écrit :

Fatal comme erreur. J'ai mis une heure avant de la trouver quand je l'ai faite  [:whatde]


 
pourtant les warnings ils indiquent quand tu utilises une variable sans l'initialisée?

n°886346
WhatDe
Posté le 30-10-2004 à 12:22:18  profilanswer
 

cris56 a écrit :

pourtant les warnings ils indiquent quand tu utilises une variable sans l'initialisée?


J'utilisais cc  [:airforceone]

n°886349
smaragdus
whores, drugs & J.S. Bach
Posté le 30-10-2004 à 12:29:32  profilanswer
 

viewtiful2 a écrit :


(2^(n-1)-1)-(2^(k)-1)
ex : pour n=6 et k=3 cela donne 2^5-1 - 2^3-1 = 15-7=8


 
pour n=6 et k=3, j'applique ta formule et j'obtiens :
2^(6-1) - 1 - (2^3 - 1) = 31-7 = 24
 
Faudrait djà apprendre à compter...
D'ailleurs, après simplification, ta formule devient 2^(n-1) - 2^k

n°886887
viewtiful2
Posté le 31-10-2004 à 13:36:59  profilanswer
 

(2^(n-1)-1)-(2^(k)-1)  
ex : pour n=6 et k=3 cela donne 2^5-1 - 2^3-1 = 15-7=8  
 
 
Juste une erreur, désolé CT n=5 et k=3.
 
ça me di toujours pas comment résoudre l'algo.

n°887038
viewtiful2
Posté le 31-10-2004 à 14:46:44  profilanswer
 

personne pour aider une fille en détresse?

mood
Publicité
Posté le 31-10-2004 à 14:46:44  profilanswer
 

n°887081
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 15:55:29  profilanswer
 

Voilà une fonction qui calcule en une ligne ta formule :
 
 

int puissbin(int n, int k) {
    return ((1<<(n-1)) - (1<<k));
}


Message édité par smaragdus le 31-10-2004 à 15:56:31
n°887136
viewtiful2
Posté le 31-10-2004 à 17:39:18  profilanswer
 

ok merci, je suis contente!!!
j'avais déja un début de réponse.  
serait il possible de modifier l'algo pour utiliser le & et le | ?

n°887143
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 17:42:13  profilanswer
 

Je ne vois pas l'interet d'utiliser le & ou le |

n°887164
viewtiful2
Posté le 31-10-2004 à 17:59:19  profilanswer
 

Juste pour avoir une fonction qui permet d'utiliser >> et << et | et & plutot que ( +, - , *, /).
Sinon merci a toi, ça marche trés bien ta fonction ulta courte.

n°887170
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 18:01:44  profilanswer
 

Dans ce cas, ça aurait cool de préciser dans ton 1er message que seuls les opérateurs *logiques* (et non binaires) étaient autorisés.
 

n°887175
viewtiful2
Posté le 31-10-2004 à 18:07:15  profilanswer
 

non non logique c : || et && et !
 
ce qu'il faut c les opérateurs de manipulation de bits :
<< et >> et & et | et ^ et ~  
 
voilu


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Le binaire et les puissances pour les pro

 

Sujets relatifs
Ecriture/Lecture de fichier binaire (ios::binary) avec << et >>[Algo] Vérification de la parité d'un arbre binaire
Petite question à propos de l'accès en mode binaire des fichiers...[C++] Sérialisation binaire
ET binairematrice binaire
lire dans un fichier binaire en hexa (débutant)Conversion d'un chiffre décimal en binaire en C ?
problème de conversion d'un hexadécimal en binaire !binaire en c++
Plus de sujets relatifs à : Le binaire et les puissances pour les pro


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR