Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | None | 0 0
  1. // Proszę napisać funkcje wykonujące na liczbach zapisanych binarnie.
  2. // operacje:
  3. // 1) sumowania (add_up)    np. 1+0=1, 1+1=10
  4. // 2) koniunkcja (bit_and)  np. 1&1=1, 1&0=0
  5. // 3) alternatywa wykluczająca (bit_xor)   np. 1^1=0, 1^0=1
  6. // 4) zamiana na system dziesiętny
  7.  
  8. // Uwaga:
  9. // - proszę wykorzystać tablicę o stałym rozmiarze np. 32
  10. //  i przechowywać informację o "długości" liczby (liczbie bitów).
  11. //  Nadmiarowe bity można wypełnić zerami.
  12. // - można też użyć std::vector (jeśli ktoś zna i bardzo chce)
  13. // - nie trzeba sprawdzać czy długości liczby i maski są zgodne
  14. // - proszę zadbać o nie wychodzenie poza tablicę
  15.  
  16. // Uwagi:
  17. // - Pliku lab05.cpp proszę nie modyfikować.
  18. // - Przy wykonaniu zadania nie wolno korzystać z pomocy kolegów, internetu, notatek, ani
  19. //   innych materiałów (w tym własnych wcześniej przygotowanych plikow oprócz makefile)
  20. // - Kody źrodłowe muszą znajdować się w katalogu ~/preoop, do którego nikt oprócz
  21. //   właściciela nie ma praw dostępu (prawa 700)
  22. // - zadanie wysylamy na UPEL, w formie archiwum:
  23. //    tar -czvf arch_name.tar.gz dir_name
  24.  
  25. #include "Bits.h"
  26. #include <iostream>
  27.  
  28. int main ()
  29. {
  30.     int data1[] = {1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1};
  31.     int data2[] = {1, 0, 1, 0, 1, 0, 1, 0, 1, 1};
  32.  
  33.     Bits bits1;
  34.     set(&bits1, data1, sizeof(data1)/sizeof(data1[0]) );
  35.     Bits bits2;
  36.     set(&bits2, data2, sizeof(data2)/sizeof(data2[0]) );
  37.     print(&bits1);
  38.     std::cout << "  ";
  39.     print(&bits2);
  40.  
  41.     const Bits bits3 = add_up(&bits1, &bits2);
  42.  
  43.     std::cout << "summed: " << std::endl;
  44.     print(&bits3);
  45.    
  46.     int mask_data[] = {1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1};
  47.     Bits mask;
  48.     set(&mask, mask_data, sizeof(mask_data)/sizeof(mask_data[0]) );
  49.  
  50.     bit_and(&bits1, &mask);
  51.     std::cout << "after and: " << std::endl;
  52.     print(&bits1);
  53.  
  54.     bit_xor(&bits1, &mask);
  55.     std::cout << "after xor: " << std::endl << "  ";
  56.     print(&bits1);
  57.  
  58.     const Bits bits4 = add_up(&bits1, &bits2);
  59.     std::cout << "summed again: " << std::endl << " ";
  60.     print(&bits4);
  61.  
  62.     std::cout << to_decimal(&bits1) << " + " << to_decimal(&bits2) << " = ";
  63.     std::cout << to_decimal(&bits4) << std::endl;
  64. }
  65. /* wynik dzialania programu:
  66.  
  67. 110011101111
  68.  
  69.   1010101011
  70.  
  71. summed:
  72. 111110011010
  73.  
  74. after and:
  75. 110010101101
  76.  
  77. after xor:
  78.   1100010000
  79.  
  80. summed again:
  81.  10110111011
  82.  
  83. 784 + 683 = 1467
  84.  
  85.  
  86. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement