Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Bits.h
- //////////////////////////
- #pragma once
- //struktura przechowujaca bity za pomocca long inta
- struct Bits
- {
- long int data:40;
- int size;
- };
- //ustawia dlugosc bitow i wyzerowuje je
- void set_size(Bits* a, int n);
- //ustawia pierwszy bit na 0 lub 1 i zwraca -1 jesli wyjdziemy poza zakres, 0 jesli jest w porzadku
- int set_bit(Bits* a, int pos, int bit);
- //wypisuje bity ze struktury
- void print_bits(Bits* a);
- //zwraca odpowiedni bit
- int get_bit(Bits* a, int pos);
- //wyzerowuje bity
- void clear_bits(Bits* a);
- //kopiuje bity ze struktury b do a
- void copy_bits(Bits* a, Bits* b);
- Bits.cpp
- ///////////////////////////
- #include "Bits.h"
- #include <iostream>
- void set_size(Bits* a, int n) {
- a->size = n;
- a->data = 0;
- }
- int set_bit(Bits* a, int pos, int bit) {
- if((pos > a->size || pos <= 0) || (bit > 1 || bit < 0)) {
- return -1;
- }
- else {
- if(bit == 0) {
- a->data &= ~(1 << pos);
- }
- else {
- a->data |= (1 << pos) ;
- }
- return 0;
- }
- }
- void print_bits(Bits* a) {
- for(int i = a->size - 1; i >= 0 ; --i) {
- std::cout << ((a->data >> i) & 1);
- if(i % 8 == 0)
- std::cout << " ";
- }
- std::cout << std::endl;
- }
- int get_bit(Bits* a, int pos) {
- return ((a->data >> pos) & 1);
- }
- void clear_bits(Bits* a) {
- a->data = 0;
- }
- void copy_bits(Bits* a, Bits* b) {
- b->data = (b->data & -0xf) | (a -> data & 0xf);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement