NewbieContest

Programmation => Langages compilés => Discussion démarrée par: the lsd le 12 Février 2006 à 19:27:30



Titre: [C] opérateurs bit a bit et de décalage
Posté par: the lsd 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


Titre: [C] opérateurs bit a bit et de décalage
Posté par: Arch Enemy le 12 Février 2006 à 21:01:50
bah c'est pas hyper hyper nécessaire
mais bon...


Titre: [C] opérateurs bit a bit et de décalage
Posté par: Invit 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à :wink:)

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...


Titre: [C] opérateurs bit a bit et de décalage
Posté par: the lsd 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 =D , je vois pas a quoi ca pourrait me servir.
Il faut donc que je potasse le binaire, bon ben c'est parti...


Titre: [C] opérateurs bit a bit et de décalage
Posté par: r1X le 17 Février 2006 à 14:32:55
Bonjour esce que une personne a des connaissances en allegro ?


Titre: [C] opérateurs bit a bit et de décalage
Posté par: Nebelmann le 17 Février 2006 à 14:39:32
En algo tu veux dire? allegro c'est pour les musiciens...
AAhh l'algorithmie...


Titre: [C] opérateurs bit a bit et de décalage
Posté par: Invit le 17 Février 2006 à 16:42:02
Arghh Nebel, Allegro c'est une lib :lol:
Perso j'y ai jamais touché...


Titre: [C] opérateurs bit a bit et de décalage
Posté par: Nebelmann 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?


Titre: [C] opérateurs bit a bit et de décalage
Posté par: r1X 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 !


Titre: [C] opérateurs bit a bit et de décalage
Posté par: r1X 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 ;)


Titre: [C] opérateurs bit a bit et de décalage
Posté par: Invit 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...


Titre: [C] opérateurs bit a bit et de décalage
Posté par: r1X le 17 Février 2006 à 22:22:26
OK bon jte remercie vais essayer aller bonne soirer =)=)


Titre: [C] opérateurs bit a bit et de décalage
Posté par: r1X 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 =D

Vais pouvoir poursuivre mon jeux, je vous remercie de votre reponse =)


Titre: [C] opérateurs bit a bit et de décalage
Posté par: JaK le 24 Février 2006 à 21:40:59
Je solissite votre attention (décidément !!!) :lol:

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 =)


=D JaK =D
----------------------------------------
En ésperant apprendre d'avantage.
----------------------------------------


Titre: [C] opérateurs bit a bit et de décalage
Posté par: Nebelmann 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 :)


Titre: [C] opérateurs bit a bit et de décalage
Posté par: JaK le 25 Février 2006 à 14:55:11
Merci de ta réponse je vais chercher ds cette direction :D

=D JaK =D


Titre: [C] opérateurs bit a bit et de décalage
Posté par: JaK le 26 Février 2006 à 00:26:21
Encore moi !!!!
Voilà j'ai un petit soussi comment on fais pour mettre une condition comme if...esle.
En faite je fais un mini annulaire et quand j'entre le prenom d'une personne j'aimerais bien que sa me met son numero.
Donc j'ai utilise les conditions. MAIS sa ne marche pas et mon meilleur ami Google ne l'ai plus depuis ce jour :lol:

Bon je sais pas si vous me comprenez mais voilà quoi :D

=D JaK =D
Le C est la base tous Hacking de nos jours sombre :twisted:


Titre: [C] opérateurs bit a bit et de décalage
Posté par: r1X le 26 Février 2006 à 00:35:00
hehe mon ami je viens de te transmettre l'astuce j'espére que tu comprendras je le pense car toi qui est un grand ami tu es très intelligent et on voit que tu as envie d'apprendre donc je ne vois pas pourquoi on ne t'aiderais pas tu es notre futut Elite :)


Titre: [C] opérateurs bit a bit et de décalage
Posté par: JaK le 26 Février 2006 à 00:44:36
Citation de: r1X
hehe mon ami je viens de te transmettre l'astuce j'espére que tu comprendras je le pense car toi qui est un grand ami tu es très intelligent et on voit que tu as envie d'apprendre donc je ne vois pas pourquoi on ne t'aiderais pas tu es notre futut Elite :)
Trop de compliments pour un simple Newbie comme moi mais je te remercie de tous ces compliments=)


Titre: [C] opérateurs bit a bit et de décalage
Posté par: r1X le 08 Mars 2006 à 13:35:52
Bonjour, y'a t'il des personnes qui maitrisent disons moyennement le GTK+ svp

En faite j'ai un petit probléme très bizarre c'est au niveau des labels en faite .
Genre il y a differentes fonction pour afficher les label ya le markup le text mais dans les 2 cas on peut utiliser les balises ou les <span> mais sa ne m'affiche jamais mes labels arfff
aussi genre:

gtk_label_set_justify(GTK_LABEL(LABEL),GTK_JUSTIFY_LEFT);

He bien nn mes labels se positionnent au centre de la fenetre = /


**No Sms** remercie d'avance de votre reponse je chercher par tout arfff = / merci