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

Les opérateurs de bits en Java

Grimmys
Grimmys
Niveau 19
26 février 2016 à 22:37:40

Bonsoir,

Je m'initie actuellement à la programmation en Java via un livre " Programmer en Java " de Claude Delannoy et je rencontre un petit problème de compréhension au niveau des opérateurs de bits :

Il donne un exemple que voici :

n & 0xF

Et explique comme quoi cela permet " de ne prendre en compte que les 4 bits de droite de n ".

Que veut-il dire par là ? :(
Pour moi ceci permet plutôt de ne prendre en compte que le 5eme bits de droite...

Grimmys
Grimmys
Niveau 19
26 février 2016 à 22:58:39

Ah mais oui je suis con moi, je pensais que 0xF était égal à 16 en décimal ( donc 0000....0001000 en binaire ), c'est sûr que du coup je ne saisissais pas. :rire:

Merci. :ok:

Sinon en passant, je ne suis pas habitué aux opérateurs de bits, absent dans les autres langages que je connais, je me pose donc quelques questions :

Comment ça se fait que les caractères " & ", " | " et " ^ " aient 2 rôles en Java ( operateur logique et operateur de bits ) ? Dans quel cas c'est l'un qui se trouve usé, dans quel cas l'autre ?

Par exemple si l'on affecte le résultat d'une expression contenant l'un de ces operateurs à une variable booléenne, l'operateur sera automatiquement considéré comme étant un operateur logique ou ça fonctionne comment ?

RogerLeCaillou
RogerLeCaillou
Niveau 10
27 février 2016 à 00:20:55

Ils n'ont pas deux rôles. & est le et bit-à bit, && est le et logique. | est le ou bit à bit, || est le ou logique. ^ (xor bit à bit) est un peu particulier dans le sens ou son équivalent logique est le == ou !=, mais il peut aussi être utilisé comme opérateur logique.

RogerLeCaillou
RogerLeCaillou
Niveau 10
27 février 2016 à 00:30:08

(petite note : on peut utiliser & et | dans un contexte logique, c'est une version d'évaluation d'une expression booléenne sans court-circuit, mais en général on l'évite pour plusieurs raisons)

Grimmys
Grimmys
Niveau 19
27 février 2016 à 00:37:48

Bah du coup si, comme tu l'as dit dans ton second post, & et | peuvent être aussi des operateurs logiques ( sans court circuit ) et pour ^, tu l'as aussi dit dans ton premier.

Ma question reste donc inchangée : dans quel cas l'un est-il considéré, dans quel cas est-ce l'autre ? :(

RogerLeCaillou
RogerLeCaillou
Niveau 10
27 février 2016 à 00:47:03

En général si on est dans un contexte logique (condition, boucle, bref, un machin qui prend un booléen) on préférera utiliser les opérateurs logiques : &&, ||, !=, ==, etc.

On préférera les opérateurs bit-à-bit pour appliquer des masques binaires, du calculatoire donc.

En général utiliser les opérateurs bit à bit dans un contexte logique c'est à proscrire car :

  • ça veut dire qu'on attend des effets bord de la part de l'expression non court-circuitée, ce qui engendre un comportement potentiellement difficile à comprendre et à débugger pour d'autres développeurs
  • c'est une feature relativement méconnue et en général si on a le choix entre faire un truc intelligent ou un truc compréhensible, on doit toujours choisir le truc compréhensible
Grimmys
Grimmys
Niveau 19
27 février 2016 à 00:55:00

D'accord d'accord donc si je comprend bien " I ", " & " et " ^ " sont exclusivement des opérateurs bit à bit, mais leur fonctionnement permet de les utiliser en tant qu'opérateurs logiques, mais ils n'en sont pas ?

Je te remercie pour tes explications bien précises. :)

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