Mnożenie vector'a bool

0

mam dwa pojemniki typu deque<bool> oba tego samego rozmiaru

a w każdym nich ciąg zer i jedynek np
0000000011110111110111
0000000000000001011111

i teraz chciałbym dokonać mnożenia i aby wynik znalazł w trzecim pojemniku, też o tej samej długości, a liczby są takie że nigdy wynik mnożenia nie będzie wykraczał poza zakres więc nie trzeba się tym martwić że się nie zmieści.

2

Użyj bitset i operatora &.

0

wielkie dzięki działa, można zamknąć

0

hm, ale to jest iloczyn na poszczególnych bitach. A ja potrzebuję mnożenia normalnego 2 liczb binarnych. Jest od tego jakiś operator a jak nie ma to zamienić to na normalnego inta i wymnożyć i z powrotem na postać binarną?

0

Wyciągaj dane z kolejki i wsuwaj do zmiennej przez << lub >> które są operatorami przesunięcia bitowego w lewo lub prawo. Na końcu uzyskasz wartości które można mnożyć/dzielić/cokolwiek.. :-)

0
Świetny Szczur napisał(a):

mam dwa pojemniki typu deque<bool> oba tego samego rozmiaru

a w każdym nich ciąg zer i jedynek np
0000000011110111110111
0000000000000001011111

i teraz chciałbym dokonać mnożenia i aby wynik znalazł w trzecim pojemniku, też o tej samej długości, a liczby są takie że nigdy wynik mnożenia nie będzie wykraczał poza zakres więc nie trzeba się tym martwić że się nie zmieści.

Jak dużo masz tych bitów? przykład mieści się w 32 bitach, więc nadal odpowiedzią nadal może być bitset (to_ulong).

0

tak, zmieszczę się w unsigned long int ale mimo wszystko wydaje mi się to dziwny sposób żeby za każdym mnożeniem zamieniać to na inta i mnożyć na intach

0

Możesz też reprezentować to zwyczajnie jako liczbę.

0
Świetny Szczur napisał(a):

tak, zmieszczę się w unsigned long int ale mimo wszystko wydaje mi się to dziwny sposób żeby za każdym mnożeniem zamieniać to na inta i mnożyć na intach

Nie rozumiem co w tym dziwnego. IMO sam sobie utrudniasz zadanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1