Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class Operators
- {
- static void Main()
- {
- //Оператор ^ е изключващо или.
- //В C# деленето на реални числа (double, float, decimal) позволява
- //делене на нула. Реалните числа могат да приемат стойности Infinity и NaN(Not a Number)
- //Битовите операции са като логическите но работят по битове или
- //с други думи конвертира числата в двоична бройна система и прилага
- //логическите операции върху всеки бит (1 или 0) от числото.
- // | - "или", & - "и", ^ - отново "изключващо или", ~ - обръща стойността на битовете
- //(0 става 1 а 1 става 0), <<, >> - измества всички битове с толкова позиции наляво или
- //надясно с колкото му зададем.
- //Можем да конвертираме бройни системи от една към друга към string с
- //Convert.ToString(number,notation), като на мястото на number се поставя числото
- //което искаме да конвертираме а на мястото на notation бройната система в която
- //искаме да го конверитраме. Добавянето на .PadLeft(length, symbol), позволява допълването
- //от ляво (PadRight е отдясно) със символ по наш избор. length се заменя с броя на символите
- //до които искаме да допълва, symbol се замества със символа който искаме да използва.
- //По-прости примери.
- int a = 3;
- Console.WriteLine(Convert.ToString(a, 2).PadLeft(32, '0') + " = a = " + a);
- int b = 5;
- Console.WriteLine(Convert.ToString(b, 2).PadLeft(32, '0') + " = b = " + b);
- Console.WriteLine(Convert.ToString(a | b, 2).PadLeft(32, '0') + " using a|b = " + (a | b));
- Console.WriteLine(Convert.ToString(a & b, 2).PadLeft(32, '0') + " using a&b = " + (a & b));
- Console.WriteLine(Convert.ToString(a ^ b, 2).PadLeft(32, '0') + " using a^b = " + (a ^ b));
- Console.WriteLine(Convert.ToString(~a, 2).PadLeft(32, '0') + " using ~a = " + (~a));
- Console.WriteLine(Convert.ToString(a << 1, 2).PadLeft(32, '0') + " using a<<1 = " + (a << 1));
- Console.WriteLine(Convert.ToString(a >> 1, 2).PadLeft(32, '0') + " using a>>1 = " + (a >> 1));
- Console.WriteLine(); // Hotkey CW + Tab + Tab
- //Полезни програмки с битови операции:
- int pos, number, move, mask, bit, result;
- //Взимане на стойността на бита на определена позиция от определено число:
- pos = 5;
- number = 291; // 00000001 00100011
- move = number >> pos; // 00000000 00001001
- bit = move & 1; // 00000000 00000001 = 1
- //Променяне на бит на определена позиция на 0
- pos = 5;
- number = 291; // 00000001 00100011
- mask = ~(1 << pos); // 11111111 11011111
- result = number & mask; // 00000001 00000011 = 259
- //Променяне на бит на определена позиция на 1
- pos = 4;
- number = 291; // 00000001 00100011
- mask = 1 << pos; // 00000000 00010000
- result = number | mask; // 00000001 00110011 = 307
- //Оператор който винаги забравям: "?:".
- // b?x:y - Ако b е true резултата е x, в противен случай е y.
- //Оператор typeof(type), като на мястото на type се замества с това което
- //искате да проверите, по същият начин работи и sizeof(type), но за размера;
- Console.WriteLine(typeof(int) + " has " + sizeof(int) + " baits");
- Console.WriteLine();
- //Оператора "is" проверява дали обект е идентичен на друг.
- Console.WriteLine("Is 5 int: " + (5 is int));
- Console.WriteLine("Is 5 bool: " + (5 is bool));
- Console.WriteLine();
- //Оператор "??".
- int? j = null;
- int y = j ?? -1; //Ако стойността от ляво (j) е null, взима стойността от дясно на "??"
- Console.WriteLine("y is {0}.", y);
- j = 1;
- y = j ?? -1;//Щом стойността от ляво (j) вече не е null, взима нея.
- Console.WriteLine("y is {0} now.", y);
- //Скрито конвертиране (cast) (implicit conversion) е автоматичното конвертиране на
- //един тип данни към друг. Позволено е когато не се губи информация при конвертирането
- //или с други думи когато по-малък тип данни трябва да се ковертира към по-голям.
- int small = 5;
- long large = small; //Позволено е става автоматично. int<long
- //Явното ковертиране (explicit conversion) се случва по наше желание.
- //Обикновено се изисква когато има опасност от загуба на информация.
- //Стандартното (type)variable или добавяне на буква накрая.
- large = 7;
- small = (int)large;
- float conversion = 1.75f;//Всяко реално (дробно) число се счита за double от
- //компилатора. Нужно е добавянето на f накрая за да може компилатора да го конвертира
- // във float. Това е явно конвертиране.
- Console.WriteLine();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement