Работа индексатора и значимая переменная типа uint - C#
Формулировка задачи:
В общем снова какие-то грабли
Вот код.
И вот чуток
Изучал значит я тут индексаторы и свойства, ну вроде степени двойки нормально работали до всех положительный чисел типа int, однако мне захотелось разширить количество степеней ну и попробывал вставить везде uint. В результате как вы уже поняли ничего не получилось на последней итерации цикла while т.е. 32 переменная result сбрасывается в 0. На сколько я понимаю когда самый старший бит в uint должен стать 1 то все значение соскакивает в 0.
Что не так? Help
class PwrOfTwo { public uint this [int index] { get { return (index > 0) ? pwr(index) : 1; } } uint pwr (int i) { uint result = 1u; while (i > 0) { i--; result *= 2u; } return result; } }
class Program { static void Main(string[] args) { PwrOfTwo pwr = new PwrOfTwo(); Console.Write(pwr[32]); } }
Решение задачи: «Работа индексатора и значимая переменная типа uint»
textual
Листинг программы
result = (result << 1) | 1;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д