CountsOfBitOne - Problem
Колеги реших да използвам побитови операции за задачата, но не ми излиза вeрен резултат на изхода. Някой може ли да хвърли едно око? :)
Колеги реших да използвам побитови операции за задачата, но не ми излиза вeрен резултат на изхода. Някой може ли да хвърли едно око? :)
Колега, тези 2 реда:
са напълно излишни.Това, което правиш е обръщане на вече полученото число първо към бинарна репрезентация и после от нея към инт.Просто ги изтрий, пусни цикъла да върти до 32(дори и последната 1ца да е на 2ра позиция, в паметта числото си се пази в 32 бита).
Освен това, този ред ти е грешен:
if (((mask << i) & aBinaryInteger) == 1)
Трябва да бъде if (((mask << i) & aBinaryInteger) > 0), защото:
0001101000(
&
0000001000(mask<<3)
=
0000001000(>1)
Условието на if-a трябва да ти е !=0, защото резултата не е 1, а 1, отместено наляво i пъти.
Напр числото ни е 10110001 и сме на позиция i=4, т.е. маската ни е 10000 => резултата е 10000 = 16 , а не 1