Cześć,
Czy może ktoś sprawdzić mój kod. Maskę bitową? Głowie się od kilku godzin.
Wiem,żę coś pomieszałem z operacjami.
#include <iostream>
void showNumber(unsigned int number, unsigned short int s) {
int* tab;
tab = new int[s];
unsigned short int num = number;
//for (int i = s - 1; i >= 0; i--) {
for (int i = 0; i < s; i++) {
tab[i] = num % 2;
num = num / 2;
}
for (int i = s - 1; i >= 0; i--) {
std::cout << tab[i] << " ";
}
std::cout << '\n';
}
unsigned int setBitFlag(int bit) {
unsigned int bitflag;
bitflag = 1;
bitflag = bitflag << bit; // 1<<bit
return bitflag;
}
void reset(unsigned int number, int bit, int ver) {
unsigned int bitflag = setBitFlag(bit);
unsigned int result = number&(~bitflag);
showNumber(result, ver);
}
void setbit(unsigned int number, int bit, int value, int ver) {
unsigned int bitflag = setBitFlag(bit);
unsigned int result = number | bitflag;
showNumber(result, ver);
}
void invert(unsigned int number, int bit, int ver) {
unsigned int bitflag = setBitFlag(bit);
unsigned int result = number ^ bitflag;
showNumber(result, ver);
}
void check(unsigned int number, int bit, int ver) {
unsigned int bitflag = setBitFlag(bit);
unsigned int result = number&bitflag; // ma pokazac 0 lub 1
showNumber(result, ver);
}
int main() {
unsigned int a;
int bit, version;
std::cout << "Podaj liczbe: ";
std::cin >> a;
std::cout << "Podaj bit: ";
std::cin >> bit;
std::cout << "16 czy 32: ";
std::cin >> version;
std::cout << '\n';
std::cout << " ";
showNumber(a, version);
std::cout << "Zerowanie ";
reset(a, bit, version);
std::cout << "Ustawienie ";
setbit(a, bit, 1, version);
std::cout << "Odwrocenie ";
invert(a, bit, version);
std::cout << "Sprawdzenie ";
check(a, bit, version);
system("PAUSE");
return 0;