• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ maska bitowa, operacje na bitach

Aruba Cloud - Virtual Private Server VPS
0 głosów
1,476 wizyt
pytanie zadane 25 stycznia 2018 w C i C++ przez mar25 Nowicjusz (140 p.)

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;

 

1
komentarz 25 stycznia 2018 przez criss Mędrzec (172,590 p.)
edycja 26 stycznia 2018 przez criss
A podzielisz się info co ten kod miałby robić/z czym są problemy? (pomocne przy szukaniu problemu)
1
komentarz 25 stycznia 2018 przez adrian17 Mentor (352,580 p.)
Na oko, kod i jego zachowanie wygląda ok.`setBitFlag` i `setBitFlag` są trochę przekombinowane (i ciekną pamięcią), ale poza tym wyniki wyglądają poprawnie.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 456 wizyt
pytanie zadane 30 czerwca 2017 w Java przez LightInWindow Użytkownik (720 p.)
0 głosów
0 odpowiedzi 164 wizyt
pytanie zadane 19 maja 2017 w PHP przez mopatowicz Użytkownik (560 p.)
0 głosów
1 odpowiedź 747 wizyt
pytanie zadane 9 września 2016 w PHP przez Q_Nick Mądrala (5,010 p.)

93,335 zapytań

142,331 odpowiedzi

322,415 komentarzy

62,670 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...