Informatică, întrebare adresată de beeskywalker, 8 ani în urmă

Se citesc 2 numere întregi de la tastatură. Primul număr este cuprins doar în intervalul 0-7 și al doilea număr este cuprins doar în intervalul 0-31. Să se eficientizeze modul de stocare a celor două numere astfel: cu ajutorul operațiilor pe biți să se rețină ambele numere în memoria calculatorului în spațiul alocat unei singure variabile de tipul char. Să se afișeze mai apoi caracterul rezultat în urma concatenării celor două numere, precum și cele 2 numere, folosindu-vă doar de variabila de tip char. In c va rog, nu c++.

Răspunsuri la întrebare

Răspuns de vasyop
1

#include<stdio.h>

int main()

{

   int x = 5;

   int y = 25;

   

   unsigned char a = x; //      = 00000101

   unsigned char b = y; //      = 00010100

   

   unsigned char c = a << 5; // = 10100000

   c+=b; //                     = 10110100

   

   

   // si ca sa le scoti:

   printf("%d\n",c >> 5);

   printf("%d\n", c & 31);     // 31 este 00011111 si cand faci & cu c iti face primii 3 biti 0

   

   // daca te intreaba de ce unsigned char si nu char ii zici ca tot 8 biti ocupa e dar e mai usor sa lucrezi cu el

   

   

}


beeskywalker: MUltumesc, mult!
Alte întrebări interesante