Advertisement
Guest User

Untitled

a guest
Oct 20th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  1. Bits.h
  2. //////////////////////////
  3. #pragma once
  4. //struktura przechowujaca bity za pomocca long inta
  5. struct Bits
  6. {
  7.     long int data:40;
  8.     int size;
  9. };
  10.  
  11. //ustawia dlugosc bitow i wyzerowuje je
  12. void set_size(Bits* a, int n);
  13.  
  14. //ustawia pierwszy bit na 0 lub 1 i zwraca -1 jesli wyjdziemy poza zakres, 0 jesli jest w porzadku
  15. int set_bit(Bits* a, int pos, int bit);
  16.  
  17. //wypisuje bity ze struktury
  18. void print_bits(Bits* a);
  19.  
  20. //zwraca odpowiedni bit
  21. int get_bit(Bits* a, int pos);
  22.  
  23. //wyzerowuje bity
  24. void clear_bits(Bits* a);
  25.  
  26. //kopiuje bity ze struktury b do a
  27. void copy_bits(Bits* a, Bits* b);
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34. Bits.cpp
  35. ///////////////////////////
  36.  
  37. #include "Bits.h"
  38. #include <iostream>
  39.  
  40. void set_size(Bits* a, int n) {
  41.     a->size = n;
  42.     a->data = 0;
  43. }
  44.  
  45. int set_bit(Bits* a, int pos, int bit) {
  46.     if((pos > a->size || pos <= 0) || (bit > 1 || bit < 0)) {
  47.         return -1;
  48.     }
  49.     else {
  50.         if(bit == 0) {
  51.             a->data &= ~(1 << pos);
  52.  
  53.         }
  54.         else {
  55.             a->data |= (1 << pos) ;
  56.         }
  57.         return 0;
  58.     }
  59.  
  60. }
  61.  
  62. void print_bits(Bits* a) {
  63.     for(int i = a->size - 1; i >= 0 ; --i) {
  64.         std::cout << ((a->data >> i) & 1);
  65.         if(i % 8 == 0)
  66.             std::cout << " ";
  67.     }
  68.     std::cout << std::endl;
  69. }
  70.  
  71. int get_bit(Bits* a, int pos) {
  72.     return ((a->data >> pos) & 1);
  73. }
  74.  
  75.  
  76. void clear_bits(Bits* a) {
  77.     a->data = 0;
  78. }
  79.  
  80. void copy_bits(Bits* a, Bits* b) {
  81.     b->data = (b->data & -0xf) | (a -> data & 0xf);
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement