Почему вы используете pow
для вычисления степени 2? Это слишком медленно. Используйте 1 << p
, чтобы получить p-ую степень двойки. Например, 1 << 0
даст 1, 1 << 1
даст 2, 1 << 2
даст 4. Это связано с характером операции битового сдвига: сдвиг одного бита влево эквивалентен умножению на 2.
Кроме того, похоже, что в вашей программе есть бесконечный цикл:
for(i=length;i>=0;i++)
Если length
равен> = 0, цикл никогда не прекратится.
Это должно это исправить:
for(i = length - 1; i>=0; i--) sum += (binaryChar[i]*(1 << multiplier++));