num q i ;
Console. WriteLine (“ num: ”Q num);
Num q (ushort ) ( “num : “ Q num);
num q (ushort ) ( num I 1); G’G’ num| 0000 0001
Console. WriteLine ( “ num ga kichik bitni kuygandan so’ng: “
Q num Q “g’ n”) ;
Bu dasto’rning natiyjasi kuyidagicha
num 1
num kichkina bitni olib tashlangandan so’ng : 1
num 2
num kichkina bitni olib tashlangandan so’ng : 3
num 3
num kichkina bitni olib tashlangandan so’ng : 3
num 4
num kichkina bitni olib tashlangandan so’ng : 5
num 5
num kichkina bitni olib tashlangandan so’ng : 5
num 6
num kichkina bitni olib tashlangandan so’ng : 7
num 7
num kichkina bitni olib tashlangandan so’ng : 7
num 8
num kichkina bitni olib tashlangandan so’ng : 9
num 9
num kichkina bitni olib tashlangandan so’ng : 9
num 10
num kichkina bitni olib tashlangandan so’ng : 11
Bu dasto’rning ishi YOKI razryad operatorining ketma-ket sonlar orasida va 1 soni ikkilik kodida 0000 0001 turida keltiriladi. Shunday kili, 1- bo’ ma’noda fakat kichik razryad kuyilgan. Agarda, bu ma’no YOKI amalining ba’zi bir ma’nosi bo’lsa, unda bu amalning natiyjasi ikkinchi operand Bilan tuxri keladi uning kichik razryadidan tashkari , ya’ni u 1 teng bo’ladi ( xolgan xammasi o’zgarmiydi). Shunday kilib, xoxlagan jo’ft son YOKI opertoridan « utib» bir soniga kupayadi, ya’ni tok soni bo’ladi.
YOKI razryad kiskarto’vchi ( OR) bitga birni ko’yadi fakatgina natiyjasi bir-biridan fark kilsa gina, ya’ni teng emas.
Masalan:
0111 1111
1011 1001
________
1100 0110
OR operatori o’zgacha bir xossaga ega, va uni kodlashda foydalaniladi. Agarda, OR amalini X ukish va Y ma’nosi orasida bajarsak, va OR amalini birinchi operatsiyasi Bilan Y ma’nosi orasdi foydalansak, unda X ning oldingi ma’nosini olamiz. Bu deganimiz ikkita amalni bajargandan so’ng
R1 q X → Y ; R2 q R1 →Y ;
R2 ning ma’nosi X ma’nosi bilan barobar bo’ladi. Shunday kilib, ketma-ket OR amalini ishlatgandan so’ng, Y- ning bir xil ma’nolarni foydalangandan so’ng X-ning ma’nosi chikadi. Bu prinsipni oddiy shifrlashda foydalansa bo’ladi, unda ba’zi bir ma’no - kaliti – axborotni kodlash va kodni ochishda yordam beradi. YOKI kiskarto’vchi amali shifrlashda birinchi marotaba foydalaniladi, a kodni ochishda ikkinchi marotaba foydalaniladi. Bu oddiy uslubni kuyidagi dasto’rda ko’rib utamiz:
G’G’ OR operatorini axborotni shifrlashda
va shifrlanganni ochishda foydalanishi.
using System;
class Encode {
public static void Main( ) {
char chl ‘ H1; char ch2 -
‘1’ ; char ch3 –‘1’
int key q8.8;
Console. WriteLine (“ Oldingi axborot : “ Q
chl Q ch2 Qch3 );
G’G’ Axborotni shifrlaymiz. ch1q
(char) (ch1 A key); ch2 q
(char) (ch2 - key); ch3 q
(char) (ch3 A key);
Console. WriteLine (“ Shifrlangan axborot : “ Q
chl Q ch2 Qch3 );
G’G’ shifrlangan axborotni ochamiz;
ch1q (char) (ch1 l key);
ch2 q (char) (ch2 A key);
ch3 q (char) (ch3 l key);
Console. WriteLine (“ Shifrlangan axborotni ochilgani : “ Q
chl Q ch2 Qch3 ); } }
Bu dasto’rning natiyjasi kuyidagicha:
Bor bulgan axborot : Hi!
Shifrlangan axborot :
> 1y Shifrlanganni ochilgan axborot:
Hi!
Kurib turganingizdek, OR amalaining ikki marotaba foydalanilishi, bir kalitning ma’nosini ikkalasinda xam foydalanilishida shifrlanganni ochilgan axborotni olamiz.
YUK unar operatori ( yoki I gacha to’liktirilgan operator) uzining operandining xamma bitlarining xolatini tekshiradi. Masalan, agarda butunsoni ma’no ( A o’zgaruvchida saklanadigan) ikkilik kodini tashkil etadi 1001 0110, A-amalining natiyjasida ikkilik kodini olamiz 0110 1001.
Endigi dasto’rda YUK operatorining ba’zi bir soni 1 ga to’liktirilganincha ikkilik kodida ko’rsatiladi.
G’G’ YUK operatorining foydalanilishi
using System;
class Not Demo { public static void
Main( ) {
Sbyte to q -34
int t;
for ( t-128; t > 0; t q tG’2 ) {
if (( b & t ) 1q0) Console.Write C “1”);
if (( b & t ) - 0) Console.Write ( ”0”);
Console. WriteLine ( );
G’G’ Barcha bitlarni tekshiramiz,
bq(sbyte) b;
for ( t q 128; t > 0; t q tG’2) {
if (( b & t ) 1q0) Console.Write C “1”);
if (( b & t ) –i 0) Console.Write ( ”0”);
}}} Bo’ dasturning natiyjasi kuyidagicha
1 1 0 1 1 1
1 0
0 0 1 0 0 0
0 1