Работа индексатора и значимая переменная типа 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д