C# For Dummies

Глава 8. Бройни системи

1. Превърнете числата 151, 35, 43 и 251 в двоична бройна система.

Упътване: Използвайте методите за превръщане от една бройна система в друга. Можете да сверите резултатите си с калкулатора на Windows, който поддържа работа с бройни системи след превключване в режим "Scientific".

Решение:
static void Main(string[] args)
{
    Console.WriteLine("150 to binary {0}.", Convert.ToString(150, 2));
    Console.WriteLine("35 to binary {0}.", Convert.ToString(35, 2));
    Console.WriteLine("43 to binary {0}.", Convert.ToString(43, 2));
    Console.WriteLine("251 to binary {0}.", Convert.ToString(251, 2));
}

2. Превърнете числото 1111010110011110(2) в шестнадесетична и в десетична бройна система.

Упътване: Погледнете упътването за предходната задача.

Решение:
static void Main(string[] args)
{
    Console.WriteLine("1111010110011110 to decimal is {0}.",
        Convert.ToInt64("1111010110011110", 2));

    Console.WriteLine("1111010110011110 to hexadecimal is {0}.",
        Convert.ToInt64("1111010110011110", 2).ToString("X"));
}

3. Превърнете шестнайсетичните числа 2A3E, FA, FFFF, 5A0E9 в двоична и десетична бройна система.

Упътване: Погледнете упътването за предходната задача.

Решение:
static void conversion(string value)
{
    Console.WriteLine("{0} to decimal is {1}.",
        value, Convert.ToInt32(value, 16));
    Console.WriteLine("{0} to decimal is {1}.\n", value,
        Convert.ToString(Convert.ToInt32(value, 16), 2));    
}

static void Main(string[] args)
{
    conversion("2A3E");
    conversion("FA");
    conversion("FFFF");
    conversion("5A0E9");
}

4. Да се напише програма, която преобразува десетично число в двоично.

Упътване: Правилото е "делим на 2 и долепяме остатъците в обратен ред". За делене с остатък използваме оператора %.

Решение:
static void Main(string[] args)
{
    Console.Write("Enter decimal number: ");
    int deci = Int32.Parse(Console.ReadLine());
    Console.WriteLine("{0} to binary is {1}.",
        deci, deci.ToString(deci, 2));
}

5. Да се напише програма, която преобразува двоично число в десе­тично.

Упътване: Започнете от сума 0. Умножете най-десния бит с 1 и го прибавете към сумата. Следващия бит вляво умножете по 2 и добавете към сумата. Следващия бит отляво умножете по 4 и добавете към сумата и т.н.

Решение:
static void Main(string[] args)
{
    Console.Write("Enter binary number: ");
    string binary = Console.ReadLine();
    Console.WriteLine("{0} to decimal is {1}.",
        binary, Convert.ToInt64(binary, 2));
}

6. Да се напише програма, която преобразува десетично число в шестнадесетично.

Упътване: Правилото е "делим на основата на системата (16) и долепяме остатъ­ците в обратен ред". Трябва да си напишем логика за отпечатване на шестнайсетична цифра по дадена стойност между 0 и 15.

Решение:
static void Main(string[] args)
{
    Console.Write("Enter decimal number: ");
    int deci = Int32.Parse(Console.ReadLine());
    Console.WriteLine("{0} to hexadecimal is {1}.",
        deci, deci.ToString("X"));
}

7. Да се напише програма, която преобразува шестнадесетично число в десетично.

Упътване: Започнете от сума 0. Умножете най-дясната цифра с 1 и я прибавете към сумата. Следващата цифра вляво умножете по 16 и я добавете към сумата. Следващата цифра вляво умножете по 16*16 и я добавете към сумата и т.н. до най-лявата шестнайсетична цифра.

Решение:
static void Main(string[] args)
{
    Console.Write("Enter hexadecimal number: ");
    string hexa = Console.ReadLine();
    Console.WriteLine("{0} to decimal is {1}.",
        hexa, Convert.ToInt32(hexa, 16));
}

8. Да се напише програма, която преобразува шестнадесетично число в двоично.

Упътване: Ползвайте бързия начин за преминаване между шестнайсетична и двоична бройна система (всяка шестнайсетична цифра съответства на 4 двоични бита).

Решение:
static void Main(string[] args)
{
    Console.Write("Enter hexadecimal number: ");
    string hexa = Console.ReadLine();
    Console.WriteLine("{0} to binary is {1}.",
        hexa, Convert.ToString(Convert.ToInt32(hexa, 16), 2));
}

9. Да се напише програма, която преобразува двоично число в шестна­десетично.

Упътване: Ползвайте бързия начин за преминаване между двоична и шестнайсе­тична бройна система (всяка шестнайсетична цифра съответства на 4 двоични бита).

Решение:
static void Main(string[] args)
{
    Console.Write("Enter binary number: ");
    string binary = Console.ReadLine();
    Console.WriteLine("{0} to hexadecimal is {1}.",
        binary, Convert.ToInt32(binary, 2).ToString("X");
}

10. Да се напише програма, която преобразува двоично число в десетично по схемата на Хорнер.

Упътване: Приложете директно схемата на Хорнер.

Решение:
Link
11. Да се напише програма, която преобразува римските числа в арабски.

Упътване: Сканирайте цифрите на римското число отляво надясно и ги добавяйте към сума, която първоначално е инициализирана с 0. При обработката на всяка римска цифра я взимайте с положителен или отрицателен знак в зависимост от следващата цифра (дали има по-малка или по-голяма десетична стойност).

Решение:
Link
12. Да се напише програма, която преобразува арабските числа в римски.

Упътване: Имаме абсолютно аналогични съответствия на числата 10, 20, ..., 90 с тяхното представяне с римските цифри "X", "L" и "C", нали? Имаме аналогични съответствия между числата 100, 200, ..., 900 и тяхното представяне с римските цифри "C", "D" и "M" и т.н.
Сега сме готови да преобразуваме числото N в римска бройна система. То трябва да е в интервала [1...3999], иначе съобщаваме за грешка. Първо отделяме хилядите (N / 1000) и ги заместваме с римския им еквивалент. След това отделяме стотиците ((N / 100) % 10) и ги заместваме с римския им еквивалент и т.н.

Решение:
Link
13. Да се напише програма, която по зададени N, S, D преобразува числото N от бройна система с основа S към бройна система с основа D.

Упътване: Можете да прехвърлите числото от бройна система с онова S към бройна система с онова 10, а после от бройна система с основа 10 към бройна система с онова D.

Решение:
Link

← Обратно