Bases de la programmation (trace de pseudo-code)

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 ?

8-bit: x ← 13, y
y ← (x << 2) ∨ (x >> 1)
  1. A27
  2. B54
  3. C58
Afficher la réponse et l'explication

Réponse : B. 54

13 s'écrit 00001101 en binaire. x << 2 le décale de 2 bits vers la gauche, ce qui donne 00110100 = 52, et x >> 1 le décale de 1 bit vers la droite, ce qui donne 00000110 = 6 (le 1 de poids faible qui sort est perdu). Leur OU vaut 00110110 = 54. 52 et 6 ont tous deux le bit de poids 4 à 1 : le OU diffère donc de la somme 52 + 6 = 58.

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

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

  1. ∧ désigne le ET bit à bit. Quelle est la valeur de c après l'exécution du programme suivant ?
  2. 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 ?
  3. 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 ?
  4. ÷ 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 ?
  5. Une pile est représentée par le tableau d'entiers st de 5 éléments et la variable entière top. Tous les éléments de st valent 0 au départ, et top vaut 0. push(v) ajoute 1 à top puis exécute st[top] ← v ; pop() renvoie la valeur de st[top] puis soustrait 1 de top (les éléments de st ne sont pas modifiés). Quelles sont les valeurs de top et st après l'exécution du programme suivant ?