Loading...
AlexanderBeloev avatar AlexanderBeloev 70 Точки

15ти Проблем от 3то домашно - Решение до тук + въпрос.

Здравейте,

 

Исках да споделя обяснение на 15та задача. Написал съм малко по-подробно нещата за да може да е максимално разбираемо:

 

LINK

 

Исках да попитам следното. Понеже говорих с Наков относно задачата и той каза, че е по добре да се вземат трите стойности наведнъж и да се заместят. Дали някой знае как става? Array?

 

Иначе и горното решение работи, просто повторете кода три пъти за 3те размени и ще се получи.

 

Благодаря ви предварително!

 

P.S. - Пускам го в нова тема защото само така ще могат да го видят повече хора. Това е естеството на форумите. Който е бил в мега форуми като WarriorForum и подобни знае, че организацията е единствено и само по категории.

Тагове:
6
Programming Basics
ViValDam avatar ViValDam 15 Точки

Това е отговор на въпроса най-отгоре !

Според мен C.Наков е имал в предвид да разместиш всяка една двойка битове (3-24, 4-25, 5-26) по отделно , без цикъл,  тоест да напишеш три пъти един и същ код, с различни стойности  - ето така :


static void Main()


     Console.WriteLine("Pleace, enter a number in the range of [ 0, " + uint.MaxValue + " ]");
     uint number = uint.Parse(Console.ReadLine());

     uint mask3, mask4, mask5, mask24, mask25, mask26;

     int bit3Value, bit4Value, bit5Value, bit24Value, bit25Value, bit26Value;

     // swap 1.

     //getting the value in the bit 3

     mask3 = 1u << 3;

     bit3Value = (int)(number & mask3) >> 3; // result 0 or 1


     //getting the value in the bit 24

     mask24 = 1u << 24;

     bit24Value = (int)(number & mask24) >> 24; // result 0 or 1


     //replacing the value of the bit in position 24 with the value of the bit in position 3

     if (bit3Value == 1) 
     {

          number = (uint)(number | mask24);

     }

     else // bit3Value = 0 
     {

          mask24 = ~mask24;

          number = (uint)(number & mask24);

     }


     //replacing the value of the bit in position 3 with the value of the bit in position 24

     if (bit24Value == 1)
     {

          number = (uint)(number | mask3);

     }

     else // bit24Value = 0 
     {

          mask3 = ~mask3;

          number = (uint)(number & mask3);

      }

      // swap 2.

      //getting the value in the bit 4

      mask4 = 1u << 4;

      bit4Value = (int)(number & mask4) >> 4; // result 0 or 1


      //getting the value in the bit 25

      mask25 = 1u << 25;

      bit25Value = (int)(number & mask25) >> 25; // result 0 or 1

      //replacing the value of the bit in position 25 , with the value of the bit in position 4

      if (bit4Value == 1)
      {

            number = (uint)(number | mask25);

      }

      else // bit4Value = 0 
      {

          mask25 = ~mask25;

          number = (uint)(number & mask25);

      }

      // replacing the value of the bit in position 4 , with the value of the bit in position 25

      if (bit25Value == 1)
     {

           number = (uint)(number | mask4);

     }

     else // bit25Value = 0 
     {

           mask4 = ~mask4;

           number = (uint)(number & mask4);

     }


      // swap 3.

      //getting the value in the bit 5

      mask5 = 1u << 5;

      bit5Value = (int)(number & mask5) >> 5; // result 0 or 1

 

      //getting the value in the bit 26

      mask26 = 1u << 26;

      bit26Value = (int)(number & mask26) >> 26; // result 0 or 1

 

      //replacing the value of the bit in position 26 with the value of the bit in position 5

      if (bit5Value == 1)
      {

           number = (uint)(number | mask26);

      }

      else // bit5Value = 0 
      {

           mask26 = ~mask26;

           number = (uint)(number & mask26);

      }

      //replacing the value of the bit in position 5 with the value of the bit in position 26

      if (bit26Value == 1)
      {

            number = (uint)(number | mask5);

      }

      else // bit26Value = 0 
      {

            mask5 = ~mask5;

            number = (uint)(number & mask5);

       }


       Console.WriteLine("The new number is : " + number);

       Console.Read();
}

 

Това е хубаво упражнение, да се схване ,какво става при размяна на стойностите на битовете .

-1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.