| (Mantiqiy qo'shish)
Bu mantiqiy ko'paytirishga o'xshaydi, operatsiya ikkilik raqamlarda ham amalga oshiriladi, ammo agar berilgan raqamdagi kamida bitta raqam bitta bo'lsa, endi biri qaytariladi.
Masalan:
int x1 = 2; // 010
int y1 = 5; // 101
Console.WriteLine (x1 | y1); // 7 - 111 ni bosib chiqaradi
int x2 = 4; // 100
int y2 = 5; // 101
Console.WriteLine (x2 | y2); // 5 - 101 ni bosib chiqaradi
^ (Mantiqiy maxsus OR)
Ushbu operatsiya XOR deb ham ataladi, u ko'pincha oddiy shifrlash uchun ishlatiladi:
int x = 45; // Shifrlanadigan qiymat - 101101 ikkilik shaklda
int key = 102; // 1100110 ikkilik shaklida bu kalit bo'lsin
int encrypt = x ^ key; // Natijada 1001011 yoki 75 raqami bo'ladi
Console.WriteLine ("Shifrlangan raqam:" + encrypt);
int decrypt = encrypt ^ key; // Natija asl raqam 45 bo'ladi
Console.WriteLine ("Shifrlangan raqam:" + decrypt);
Bu erda yana bitli operatsiyalar bajariladi. Agar bizda ikkala raqam uchun joriy bitning har xil qiymatlari bo'lsa, u holda 1 qaytariladi, aks holda 0 qaytariladi.Shunday qilib, natijada 9 ^ 5 dan 12 sonini olamiz.Va raqamni echish uchun natijaga bir xil amalni qo'llaymiz.
~ (mantiqiy inkor yoki inversiya)
Barcha bitlarni teskari yo'naltiradigan yana bir bitli operatsiya: agar bit qiymati 1 bo'lsa, u nolga aylanadi va aksincha.
int x = 12; // 00001100
Console.WriteLine(~ x); // 11110011 yoki -13
Manfiy sonlarni ifodalash
C# da imzolangan raqamlarni yozish uchun eng muhim razryadli qo'shimcha kod (two's complement) ishlatiladi. Agar uning qiymati 0 ga teng bo'lsa, unda raqam musbat bo'ladi va uning ikkilik tasviri imzosiz raqamdan farq qilmaydi. Masalan, 0000 0001 o'nlik kasrda 1.
Agar eng muhim bit 1 bo'lsa, biz salbiy son bilan ish tutamiz. Masalan, 11111111 raqamli kasrda -1. Shunga ko'ra, 1111 0011 -13 ni anglatadi.
Musbat sondan manfiylikni olish uchun uni teskari tomonga qo'shishingiz:
int x = 12;
int y = ~ x;
y + = 1;
Console.WriteLine (y); // -12
Do'stlaringiz bilan baham: |