Работа индексатора и значимая переменная типа uint - C#

Узнай цену своей работы

Формулировка задачи:

В общем снова какие-то грабли Вот код.
Листинг программы
  1. class PwrOfTwo
  2. {
  3. public uint this [int index]
  4. {
  5. get
  6. {
  7. return (index > 0) ? pwr(index) : 1;
  8. }
  9. }
  10. uint pwr (int i)
  11. {
  12. uint result = 1u;
  13. while (i > 0)
  14. {
  15. i--;
  16. result *= 2u;
  17. }
  18. return result;
  19. }
  20. }
И вот чуток
Листинг программы
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. PwrOfTwo pwr = new PwrOfTwo();
  6. Console.Write(pwr[32]);
  7. }
  8. }
Изучал значит я тут индексаторы и свойства, ну вроде степени двойки нормально работали до всех положительный чисел типа int, однако мне захотелось разширить количество степеней ну и попробывал вставить везде uint. В результате как вы уже поняли ничего не получилось на последней итерации цикла while т.е. 32 переменная result сбрасывается в 0. На сколько я понимаю когда самый старший бит в uint должен стать 1 то все значение соскакивает в 0. Что не так? Help

Решение задачи: «Работа индексатора и значимая переменная типа uint»

textual
Листинг программы
  1. result = (result << 1) | 1;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы