лекц4
- 1. 1
U.CS201 Алгоритм ба програмчлал
Лекц-4
Битийн харьцуулах ба логик үйлдлүүд
Битийн үйлдэл нь илэрхийллийн гишүүдийн битийн хувьд үйлдэл хийдэг учраас энгийн арифметик
үйлдлээс хурдан хийгддэг. Си хэлэнд дараах битийн үйлдлүүд байна.
~ - бит үгүйсгэл
& -бит ба (and)
^ - битийн өргөтгөсөн буюу (xor)
|| - битийн буюу (or)
<< - битээр зүүн тийш шилжүүлэх
>> - битээр баруун тийш шилжүүлэх
Битийн үйлдлүүд нь илэрхийллийн гишүүдийн ижил байрлал дахь битүүдийн дээр үйлдлээ
гүйцэтгэдэг. Дараах хүснэгтэнд битийн ~, &, ||, ^ үйлдлүүдийн үр дүнгийн хүснэгтийг харуулав.
A бит B бит A &B A || B A^B
1 1 1 1 0
1 0 0 1 1
0 1 0 1 1
0 0 0 0 0
int a=5, b=7, k;
k=a&b; /* 5 */
k=a|b; /* 7 */
k=~a; /* 250 */
k=~b; /* 148 */
Харин битээр шилжүүлэх операторууд нь хоёр бүхэл тооны хооронд хийгддэг.
int t=2, n=2, r;
r= t<<n; /* r=8 */
int e=r>>3; /* e=1 */
Зүүн тийш шилжүүлэх оператор (<<) нь илэрхийллийн нэгдүгээр гишүүний бит (2-тын тооллын
систем дэх бичлэг)- үүдийг хоёрдугаар гишүүн удаа зүүн тийш шилжүүлнэ. Тухайлбал дээрх
жишээнд t тооны битүүд
0000000000000010 ба n=2 тул
0000000000001000 буюу 8 гарч байна.
A бит ~A
1 0
0 1
Илэрхийлэл Хоёртын бичлэг
a 00000111
b 00000101
k=a&b 00000101
k=a|b 00000111
k=~a 11111000
k=~b 11111010
- 2. 2
U.CS201 Алгоритм ба програмчлал
Жишээ: Битийн шилжүүлэлтийн операторыг ашигласан жишээ
#include <cstdlib>
#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
unsigned int y,x=255;
int c;
printf("toott zuun tiish t result n");
for(c=1; c<8; c++)
{
y=x<<c;
printf("%dtt%dtt%dn", x,c,y);
}
printf("nnn toott baruun tiish t result n");
for(c=1; c<8; c++)
{
y=x>>c;
printf("%dtt%dtt%dn", x,c,y);
}
system("pause");
return 0;
}
Программын үр дүн:
Тоо зүүн тийш үр дүн Тоо баруун тийш үр дүн
255 1 510 255 1 127
255 2 1020 255 2 63
255 3 240 255 3 31
255 4 4080 255 4 15
255 5 8160 255 5 7
255 6 16320 255 6 3
255 7 32640 255 7 1
- 3. 3
U.CS201 Алгоритм ба програмчлал
#include <cstdlib>
#include <iostream>
using namespace std;
#include<stdio.h>
/* 10-тын тооллын системийн тоог 2-тийн тооллын систем рүү хөрвүүлэх дэд програм*/
void binary(int number) {
int remainder;
if(number <= 1) {
cout << number;
return;
}
remainder = number%2;
binary(number >> 1);
cout << remainder;
}
int main()
{
unsigned int a=5,b=7,f,c,d,e;
e=a&b; /* 5 */
f=a|b; /* 7 */
c=~a; /* 250 */
d=~b; /* 148 */
printf("%d %d %d %d tn",e,f,c,d);
cout << e << " converted to binary is: ";
binary(e);
system("pause");
return 0;
}
Break, continue, goto, return оператор
Програмд break оператор нь нөхцөл шалгах, сонголтын болон давталтын операторуудтай хамт
хэрэглэгддэг. Өөрөөр хэлбэл break оператор нь зөвхөн do, for, while, switch операторуудын дотор
хэрэглэгддэг. Энэ операторын үүрэг нь дээрх операторуудын биелэлтийг тасалж программын
удирдлагыг дараагийн операторт шилжүүлэхэд оршино.
- 4. 4
U.CS201 Алгоритм ба програмчлал
Жишээ: Доорхи жишээнд break операторыг хэрхэн ашиглахыг харуулав.
#include <cstdlib>
#include <iostream>
using namespace std;
#include<stdio.h>
char s[]="ene bol jishee. End 2 oguulber baina.";
int main()
{
int c;
printf("n temdegt moriin utga: %s",s);
for(c=0; s[c]!='0'; c++)
{
if(s[c]=='.')
{
s[c+1]='0';
break;
}
}
printf("n moriin oorchlogdson utga: %sn",s);
system("pause");
return 0;
}
Дараах жишээ нь for давталтыг дуусахаас өмнө түүний үйл ажиллагааг дуусгахад break
операторыг ашиглаж байна. Жишээлбэл:
#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
int c;
printf(" 1-ees 10 hurtelh toog hewlehn");
for(c=1; ; c++)
{
if(c==11) break;
printf("n %d",c);
}
system("pause");
return 0; }
- 5. 5
U.CS201 Алгоритм ба програмчлал
Үргэлжлүүлэх оператор (continue)
Continue оператор нь do, for, while циклийн операторуудтай хамтарч ажиллана. Дээрх циклийн
операторууд дотор continue бичигдсэн бол уг операторын дараагийн үйлдлүүд биелэгдэхгүй. Do,
while циклийн операторт continue ашиглагдах үед continue-гийн дараагийн алхамт нөхцөл
илэхрийллийг бодохоос эхэлнэ.
#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
int c;
printf(" 1-ees 10 hurtelh tegsh toonii niilbern");
for(c=1; c<=10; c++)
{
if(c%2!=0) /* sondgoi too */
continue; /* dawtaltiin ehend udirdlaga shiljih*/
}
printf("n%dt",c);
system("pause");
return 0;
}
- 6. 6
U.CS201 Алгоритм ба програмчлал
Шилжилтийн оператор (goto)
Бичигдэх хэлбэр нь:
goto<тэмдэг>;
<тэмдэг>:<оператор>
Goto оператор нь <тэмдэг> -ээр эхэлсэн мөр рүү программын удирдлагыг шилжүүлнэ
Жишээ:
#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
int n;
start:;
printf(" 0- 10 hoorond too oruulna uu:");
scanf("%d",&n);
if(n<0 | n>10) goto start;
else if(n==0) goto location0;
else if(n==1) goto location1;
else goto location2;
location0:
printf(" ta 0-g oruullaa n");
goto end;
location1:
printf(" ta 1-g oruullaa n");
goto end;
location2:
printf(" ta 2-oos 10-n hoorond too oruullaa n");
end:
system("pause");
return 0;
}
- 7. 7
U.CS201 Алгоритм ба програмчлал
return оператор
Return оператор нь програмыг төгсгөх буюу функцийн утгыг буцаадаг. Хэрэглэгдэх хэлбэр нь
return[<төгсгөх код>];
эсвэл
return[<буцах утга>]; энэ операторын ард 0 гэж бичиж өгөхөд энэ мөрийг биелүүлснээр програм
энгийнээр төгсдөг. Хэрэв функц утга буцаахгүй (void төрлийн бол) return операторыг бичихгүй
байж болох ба бичсэн тохиолдолд буцах утга бичдэггүй. Өөрөөр хэлбэл return; хэлбэртэйгээр
бичих хэрэгтэй болдог. Энэ операторын хэрэглээ нь хэрэглэгчийн функцийг үзэх үед илүү
тодорхой болох болно.
Жишээ: a болон б тооны үржвэрийг бодох mult() утга буцаадаг хэрэглэгчийн функцийг
зохиож үр дүнг x хувьсагчид оноож x- ийн утгыг буцаана уу. mult() функцийн утгыг гараас
оруулах ба үр дүнг хэвлэж харуулах програм зохио.
#include <iostream>
using namespace std;
#include<stdio.h>
int x;
int mult(int a,int b)
{
x=a*b;
return x;
}
int main()
{
int c,d;
scanf("%d %d", &c,&d);
mult(c,d);
printf("%dn",x);
system("pause");
return 0;
}