logo Homepage
Pages: [1] 2
  Imprimer  
Auteur Fil de discussion: [C] opérateurs bit a bit et de décalage  (Lu 8856 fois)
the lsd
Administrateur

Profil challenge

Classement : 190/54287

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« le: 12 Février 2006 à 19:27:30 »

Salut tout le monde,
Bon alors voila, je suis en train d'apprendre le C, il faut bien commencer par quelque chose, et il y a un truc que je comprends pas trop, c'est les opérateurs bit a bit et les opérateurs de décalage, alors en fait j'ai deux peties questions :
1) Est ce que c'est important de savoir ca ou je peux le zapper?
2) Si c'est important, quelqu'u peut il m'expliquer comment ca marche "simplement", ou me donner un lien?

Voili voilou, merki d'avance

Enjoy
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Arch Enemy

Profil challenge

Classement : 7266/54287

Membre Complet
***
Hors ligne Hors ligne
Messages: 137


Voir le profil
« #1 le: 12 Février 2006 à 21:01:50 »

bah c'est pas hyper hyper nécessaire
mais bon...
Journalisée

Pitite phrase
Les enfants sur les sieges arrières sont sources d'accidents,
les accidents sur les sièges arrières sont sources d'enfants!!! ^^
Invit
Invité
« #2 le: 13 Février 2006 à 08:46:39 »

Arch tu dis ça parceque t'as pas fait la steg18 (y'a pas de logiciel tout fait pour la faire celle là )

Pour ce qui est des operateurs bit à bit, et les opérateurs de décalage, y faut d'abord connaitre, comprendre le binaire et la logique booléenne (les tables de vérité, OR, AND, XOR, NOT), et en fait le reste suit tout seul...

Par exemple, savoir que valeur << 1 revient à décaler tous les bits de valeur d'un bit vers la gauche, donc par exemple 110101 devient (1)101010 (le 1 qui était tout à gauche disparait purement et simplement, il n'est pas récupérable pour le coups en C)
unsigned char valeur = 27; // par exemple

27 en binaire s'écrit 11011 (16+8+2+1)
ou encore on peut representer l'octet (char valeur, 8bits (à priori, le cas echeant sizeof(char) == 1, passons...)) comme ça 00011011
valeur2 = valeur << 1;

valeur   = 00011011
valeur2 = 00110110

On a donc un décalage de 1 bit vers la gauche, et valeur2 vaut du coups 32+16+4+2 = 54

Donc un décalage de 1 bit vers la gauche revient à multiplier par 2, mais c'est pas une découverte, suffit de comprendre d'où vient le binaire et comment fonctionne sa représentation...
Journalisée
the lsd
Administrateur

Profil challenge

Classement : 190/54287

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« #3 le: 13 Février 2006 à 09:01:22 »

Je vois je vois merci pour tes explications Bufferbob, c'est mieux expliqué que dans mon bouquin, mais je vois pas a quoi ca peux servir en fait.
Par exemple, imaginons (ca n'est qu'un exemple ) que je veuille faire un bf pour une epreuve de javascript 8 , je vois pas a quoi ca pourrait me servir.
Il faut donc que je potasse le binaire, bon ben c'est parti...
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
r1X
Profil challenge

Classement : 44566/54287

Néophyte
*
Hors ligne Hors ligne
Messages: 14


Voir le profil
« #4 le: 17 Février 2006 à 14:32:55 »

Bonjour esce que une personne a des connaissances en allegro ?
Journalisée

La vie est un cadeau...
Nebelmann

Profil challenge

Classement : 462/54287

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1357


Voir le profil
« #5 le: 17 Février 2006 à 14:39:32 »

En algo tu veux dire? allegro c'est pour les musiciens...
AAhh l'algorithmie...
Journalisée

-- Nebelmann -- Registered linux user #429186
«Si les lecteurs étaient des compilateurs, les posteurs feraient peut-être davantage attention à ce qu'ils écrivent...»
Invit
Invité
« #6 le: 17 Février 2006 à 16:42:02 »

Arghh Nebel, Allegro c'est une lib
Perso j'y ai jamais touché...
Journalisée
Nebelmann

Profil challenge

Classement : 462/54287

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1357


Voir le profil
« #7 le: 17 Février 2006 à 17:45:23 »

Honte à moi... je ne savais pas... mais sur le coup j'me dit que y'a surement plus de gens qui utilisent SDL... non?
Journalisée

-- Nebelmann -- Registered linux user #429186
«Si les lecteurs étaient des compilateurs, les posteurs feraient peut-être davantage attention à ce qu'ils écrivent...»
r1X
Profil challenge

Classement : 44566/54287

Néophyte
*
Hors ligne Hors ligne
Messages: 14


Voir le profil
« #8 le: 17 Février 2006 à 19:46:00 »

Oui voila allegro en faite j'ai juste un **No Sms** probléme pas bien grave c'est un **No Sms** probéme de touche genre if(key[KEY_ENTER]){} un truc comme ça, ma touche ne fait aucun effet et je cherche le pourquoi

bha voila tous merci d'avance de votre reponse !
Journalisée

La vie est un cadeau...
r1X
Profil challenge

Classement : 44566/54287

Néophyte
*
Hors ligne Hors ligne
Messages: 14


Voir le profil
« #9 le: 17 Février 2006 à 20:22:05 »

a oui dsl j'allais oublier le code source ^^

http://www.rafb.net/paste/results/LNAWbj12.html

Voila merci
Journalisée

La vie est un cadeau...
Invit
Invité
« #10 le: 17 Février 2006 à 21:40:47 »

ben pour le peu que j'ai vu tu test rien en fait, key[ESC_KEY] c'est pas une fonction, ça revient à faire un while (!27) **No Sms**, donc en soi ça revient à un while (1), une boucle infinie

alors je sais pas ce que c'est "key", si c'est un pointeur définit par allegro ou quoi, sinon le plus simple ça reste d'utiliser un truc du genre :

#include <conio.h> // kbhit();

[...]

int key;

[...]

while (key != 27)  // 27 == ESC == key[KEY_ESC]
{
   if (kbhit()) key = getch();
  [...]
}

vala vala...
Journalisée
r1X
Profil challenge

Classement : 44566/54287

Néophyte
*
Hors ligne Hors ligne
Messages: 14


Voir le profil
« #11 le: 17 Février 2006 à 22:22:26 »

OK bon jte remercie vais essayer aller bonne soirer
Journalisée

La vie est un cadeau...
r1X
Profil challenge

Classement : 44566/54287

Néophyte
*
Hors ligne Hors ligne
Messages: 14


Voir le profil
« #12 le: 18 Février 2006 à 13:08:12 »

A voila j'avais fait une petite erreur stupide mon blit() etait avant ma condition
ce qui est comme meme un peu logique ...
A present ça fonctionne

Vais pouvoir poursuivre mon jeux, je vous remercie de votre reponse
Journalisée

La vie est un cadeau...
JaK

Profil challenge

Classement : 20043/54287

Néophyte
*
Hors ligne Hors ligne
Messages: 21


Voir le profil WWW
« #13 le: 24 Février 2006 à 21:40:59 »

Je solissite votre attention (décidément !!!)

Je fais un petit jeu basé sur la cryptographie et j'aimerais mettre un déconte de temps, comment je pourrais faire ???
Est ce que c'est possible de mettre un déconte de temps sur les consoles parce que je n'ai pas encore appris à programmer avec les fenêtres.
Merci d'avance


JaK
----------------------------------------
En ésperant apprendre d'avantage.
----------------------------------------
Journalisée
Nebelmann

Profil challenge

Classement : 462/54287

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1357


Voir le profil
« #14 le: 25 Février 2006 à 11:25:47 »

euh oui il doit y avoir une fonction sleep() ou quelque chose comme ça, qui te permet d'attendre le nombre de millisecondes souhaitées... après si tu mets cette fonction dans une boucle for, ca te permet de faire un compteur
Journalisée

-- Nebelmann -- Registered linux user #429186
«Si les lecteurs étaient des compilateurs, les posteurs feraient peut-être davantage attention à ce qu'ils écrivent...»
Pages: [1] 2
  Imprimer  
 
Aller à: