Bases de la programmation (trace de pseudo-code)

⊕ désigne le OU exclusif bit à bit. Quelles sont les valeurs de x et y après l'exécution du programme suivant ?

integer: x ← 12, y ← 10
x ← x ⊕ y
y ← x ⊕ y
x ← x ⊕ y
  1. Ax = 10, y = 12
  2. Bx = 6, y = 12
  3. Cx = 12, y = 10
Afficher la réponse et l'explication

Réponse : A. x = 10, y = 12

En binaire, 12 = 1100 et 10 = 1010. La première affectation donne x = 1100 ⊕ 1010 = 0110 = 6, la deuxième y = 0110 ⊕ 1010 = 1100 = 12 et la troisième x = 0110 ⊕ 1100 = 1010 = 10. Cette méthode échange les valeurs sans variable temporaire, en utilisant le fait qu'un OU exclusif appliqué deux fois avec la même valeur redonne la valeur d'origine (a ⊕ b ⊕ b = a).

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de la programmation (trace de pseudo-code)

  1. x et y sont des entiers non signés sur 8 bits. << et >> sont des décalages logiques : les bits libérés sont remplis par 0, et les bits qui sortent des 8 bits sont perdus. ∨ désigne le OU bit à bit. Quelle est la valeur de y après l'exécution du programme suivant ?
  2. ∧ désigne le ET bit à bit. Quelle est la valeur de c après l'exécution du programme suivant ?
  3. x et y sont des entiers non signés sur 8 bits. << et >> sont des décalages logiques : les bits libérés sont remplis par 0, et les bits qui sortent des 8 bits sont perdus. ∨ désigne le OU bit à bit. Avec x = 75, quelle est la valeur de y après l'affectation suivante ?
  4. La procédure bubble suivante est un tri à bulles qui trie le tableau d'entiers data par ordre croissant. swap(data, j, k) est une procédure qui échange les valeurs de data[j] et data[k]. Les indices du tableau commencent à 1. Que faut-il écrire à la place de 【a】 dans le programme ?
  5. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Le programme suivant place dans lo l'indice de la première valeur supérieure ou égale à x dans le tableau d'entiers data, trié par ordre croissant (les indices commencent à 1). x n'est pas supérieur au dernier élément de data. Que faut-il écrire à la place de 【a】 dans le programme ?