Работа индексатора и значимая переменная типа 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;