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
← Обратно