Помощ с задача BitExchange


1

Здравейте, колеги,

Съставих, каквото можах за тази домашна и го докарах до 40/100. Може ли някой да ми даде напътствия какво може да се подобри или подходът ми като цяло е грешен:

using System;

namespace BitExchange
{
    class Program
    {
        static void Main(string[] args)
        {

            int n = int.Parse(Console.ReadLine());
            //3 and 24
            int mask = 1 << 3;
            int chislo3 = (mask & n) >> 3;
            mask = 1 << 24;
            int chislo24 = (mask & n) >> 24;

            if (chislo3 == 0)
            {
                 mask = ~(1 << 24);
                int result = n & mask;

            }
            else if (chislo3 == 1)
            {
                mask = 1 << 24;
                int result = n | mask;
            }

            if (chislo24 == 0)
            {
                mask = ~(1 << 3);
                int result = n & mask;
            }

            else if (chislo24 == 1)
            {
                mask = 1 << 3;
                int result = n | mask;
            }

            //4 and 25

            int mask0 = 1 << 4;
            int chislo4 = (mask0 & n) >> 4;
            mask0 = 1 << 25;
            int chislo25 = (mask0 & n) >> 25;

            if (chislo4 == 0)
            {
                mask0 = ~(1 << 25);
                int result = n & mask0;

            }
            else if (chislo4 == 1)
            {
                mask0 = 1 << 25;
                int result = n | mask0;
            }

            if (chislo25 == 0)
            {
                mask0 = ~(1 << 4);
                int result = n & mask0;
            }

            else if (chislo25 == 1)
            {
                mask0 = 1 << 4;
                int result = n | mask0;
            }

            //5 and 26

            int mask1 = 1 << 5;
            int chislo5 = (mask1 & n) >> 5;
            mask1 = 1 << 26;
            int chislo26 = (mask1 & n) >> 26;

            if (chislo5 == 0)
            {
                mask1 = ~(1 << 26);
                int result = n & mask1;

            }
            else if (chislo5 == 1)
            {
                mask1 = 1 << 26;
                int result = n | mask1;
            }

            if (chislo26 == 0)
            {
                mask1 = ~(1 << 5);
                int result = n & mask1;
            }

            else if (chislo26 == 1)
            {
                mask1 = 1 << 5;
                int result = n | mask1;
            }

            Console.WriteLine(n);

        }   
    }
}




Отговори



0
Аз лично побитовите операции така и не ги разбрах напълно как работят.Обаче докато се опитвах да разбера попаднах на варианти решени с масиви, попрочетох масиви и нещата станаха доооооста по-лесни за обяснение(поне за мен самия). Ето ако искаш хвърли един поглед.

от milislavski (886 точки)


1

Хвърлям, благодаря :)


от trey_bg (70 точки)