CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Imcompréhension sur le opération bianair

Mister-URL
Mister-URL
Niveau 3
02 juillet 2003 à 19:49:28

Voilà, j´ai pas trop compris l´utilité/fonctionnement d´une opération binaire en C++

Gonath
Gonath
Niveau 52
02 juillet 2003 à 20:24:59

Ca permet d´aller plus vite. Par exemple pour une multiplication par 2, c´est plus simple de faire un décalage vers la droite des bites.

1000 = 8
0100 = 6

voilà, pour le processeur ce type d´opération est plus rapide.

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 20:34:55

correction :

" Ca permet d´aller plus vite. Par exemple pour une multiplication par 2, c´est plus simple de faire un décalage vers la droite des bites. "

->
Ca permet d´aller plus vite. Par exemple pour une multiplication par 2, c´est plus simple de faire un décalage vers la > >>GAUCHE<<< des > >>BITS<<< ( restons poli!!!).

" 1000 = 8
0100 = 6"

->
1000 = 8
0100 = 4 ( !!!)

Sinon les opérations binaires sont bien plus intéressantes que ca :
- optimisation pour les calculs
- utilisation de masques
- tests logiques
- codage d´informations
- etc...

Pseudo supprimé
Pseudo supprimé 02 juillet 2003 à 20:39:19

A vrai dire les opérations binaires, ça ne sert pas à grand chose, on s´en sert surtout pour l´algorithmie, génération de CD-Key, en clair c´est de l´encodage :)

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 20:41:27

" A vrai dire les opérations binaires, ça ne sert pas à grand chose"

! !!!!!!!!!!!!!!!!!!!!!!!!

Ah bon, c´est nouveau ca ? ? tu codes pas souvent alors . .. Arriver à un certain stade dans la programmation on ne peut pas s´en passer!!! ( enfin si on peut mais au détriment des performances...)

Gonath
Gonath
Niveau 52
02 juillet 2003 à 20:43:01

lol, je viens de lire que je me suis planté... j´ai été trop vite... 8/2 = 6... pitoyable... arf

Kouic
Kouic
Niveau 9
02 juillet 2003 à 20:46:46

" Arriver à un certain stade dans la programmation on ne peut pas s´en passer!"

Pour quoi faire? Accelerer les multiplications et divisions ?
Je ne sais pas combien coute, en cycle CPU, une multiplication par rapport a un decalage ( 20/1 pour les premier pentuim il me semble) mais es vraiment avantageux maintenant?
Si oui, je serais assez interresser par le pourquoi et le comment.
C´est pas pour critiquer cette fois ci ; ) juste pour information personnel :)

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 20:52:15

CoeurBrise :

Je te rappelle quand même quels sont ces opérateurs :

~ : complément à 1
< < : décalage vers la gauche

> : décalage vers la droite

& : ET logique ( AND)
^ : OU exclusif ( XOR)
| : OU inclusif ( OR)

< <= : décalage gauche + affectation

>= : décalage droit + affectation

&= : ET logique + affectation
^= : OU exclusif + affectation
|= : OU inclusif + affectation

Alors trouves moi un seul programme ( assez complet, pas un truc de débutant qui tient en 5 lignes) qui n´utilise pas un de ces opérateurs . .. ca doit exiter mais ca doit être rare à mon avis!

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 21:00:15

" Pour quoi faire? "

tu veux des exemples ? ?

EXEMPLE 1
---------
ok, alors dis moi seulement comment tu ferais pour coder un couleur, admettons sur 16 bits codée comme ceci :

xRRRRRGGGGGBBBBB
( R : red, G : green, B : blue)

Sachant que je veux la couleur 64 pour la composante R, 32 pour la couleur G, et disons 16 pour B.
Chacune de ces couleurs sont dans 3 variables : red, green, blue et je veux le résultat dans la variable color :

color = ?

Maintenant compliquons les choses, j´incrémente chacune des composantes de 1 à chaque VBL, que se passe-t-il pour ce calcul ? ( va falloir filtrer)

EXEMPLE 2
---------

Imagine maintenant une fenêtre de paramétrage avec des checkbox ( état 0 ou 1 suivant si elles sont cochées ou pas), disons qu´il y a 16 checkboxes maximum :

Comment coderais tu le paramétrage d´un utilisateur ? ?? 1 variable par checkbox ? ? baaaaaaahh!
Tu peux très bien utiliser 1 variable 16 bits et pour chacun des bits tu codes l´état des checkboxes etc...

bit 0 : état de la checkbox 1
bit 1 : état de la checkbox 2
etc . ..

Et j´en passe ! !

Kelios
Kelios
Niveau 8
02 juillet 2003 à 21:01:45

Je crois que optimiser avec des shiftages par rapport à des multiplications, c´est vraiment... du chippotage...

" Arriver à un certain stade dans la programmation on ne peut pas s´en passer!!! ( enfin si on peut mais au détriment des performances...)"
Bof... Ça ne s´applique qu´aux mutliplications par deux, et qu´aux divisions par deux d´entiers...

Ouais, disons qu´on y gagne par rapport à la multiplication, mais ça ne doit plus être grand chose... Tant qu´a y être, comme toujours, vaux mieux revoir notre algorithme que de passer son temps à chercher des cas particuliers pour gagner deux-trois clock cycles... vous ne trouvez pas?

Si tu passe ton temps à faire ça, et bien, ce n,est que pour le mieux, mais c´est un petit gain... à moins évidemment que ça soit, par exemple, à un endroit critique qui va se répéter 200 000 dans ton programme, dans une énorme boucle... Il est dans ce cas dans le le code à optimiser, vous savez le fameux 10% de la loi disant que 90% du temps est passé dans 10% du code?

Kelios
---------

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 21:04:00

euh pour l´exemple du RGB tiens pas compte des valeurs elles rentreront pas dans le codage ; ) mouarf j´ai plus l´habitude du 16 bits . .. mais le principe reste le même

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 21:04:57

et je REPETE ca ne sert pas qu´à optimiser les calculs ! !! c´est une facilité pour la représentation des données ( et le gain en espace mémoire non négligeable)

Kelios
Kelios
Niveau 8
02 juillet 2003 à 21:05:38

Oh, tu inclus les opérateurs logiques? Ah, alors là, je suis d´accord... disons que sans le AND et le OR, on irait pas loin dans les if()...

Kelios
---------

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 21:05:48

Autre exemple comment testerais tu le fait qu´un nombre entier soit pair ou impair ?

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 21:09:04

nan rien avoir avec les if...

Kouic
Kouic
Niveau 9
02 juillet 2003 à 21:12:03

Oui, la gestion des couleurs est un bon exemple, je n´y avais pas penser. Mais, meme pour cela ca devient de plus en plus rare. Les APIs graphiques s´en charge en general, je pense a OpenGL et SDL.

Pour l´exemple avec les checkboxs... ba, tu me connais, je ne metterais pas 1 variable par checkbox mais une instance de classe par checkbox :) Il y a de la memoire alors autant l´utiliser au mieux.

Pour ma part, j´ai de la chance, mes programmes n´ont pas a etre optimisés en preformances, mais cette partie de la conception d´un programme a l´air d´etre tres interressante, y a t´il des livres recents qui en parle ?

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 21:16:58

Des livres il en existe surement, mais j´en connais pas en particulier ( je pense que tout bon bouquin qui se respecte devrait en parler). Disons que c´est à mon avis une des bases de la programmation ( quelle que soit le domaine, jeux vidéo ou autre).

Pour l´exemple des checkboxes c´est un exemple parmi tant d´autres, mais si tu voulais sauvegarder l´état de la configuration tu n´irais quand même pas sauvegarder toutes tes instances de checkbox dans un fichier non ? Autant utiliser 1 seule variable sur 16 bits ( gain d´espace sur disque et en traitement).

Je pourrais te donner des tonnes d´autres exemples dans ce genre car ils sont infinis. Personnellement je ne peux m´en passer, car ce sont des opérateurs incontournables.

Kelios
Kelios
Niveau 8
02 juillet 2003 à 21:17:34

Hum, ouais, t´as raison: pour ton pair/impair, je ferais:

int nombre = 67, nombre2 = 0;

if((nombre<<31)>>31)
{
//impair
}
else
{
//pair
}

Kelios
---------

Altonfrere
Altonfrere
Niveau 10
02 juillet 2003 à 21:18:23

bin non autant faire !

if ( nombre & 1)
{
// impair
}
else
{
// pair
}

:)

Kelios
Kelios
Niveau 8
02 juillet 2003 à 21:19:36

Woops, je sais même plus pourquoi j´ai mis un nombre2... j´était surement parti sur une drole d´idée...

Kelios
---------

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment