You are on page 1of 4

‫حل تمارين كتاب "أساليب البرمجة بلغة سي‪ "++‬الطبعة الرابعة‬

‫إعداد م – محمد أحمد دريبيكة "مبرمج لغة سي‪298 4289787 "++‬‬


‫‪ )8.2‬تمارين ‪Exercise‬‬ ‫‪ )2‬على فرض أن‬
‫;‪int x=25,y=20‬‬
‫; '‪ )1 char a= 'A',b = 'F‬إذا كان المتغٌران الصحٌحان ‪ٌ y,x‬حمالن القٌمتٌن ‪ 7,4‬على‬
‫التوالً ‪ ،‬أي ‪ 0000 0111,0000 0100‬بالنظام الثنائً ‪،‬‬ ‫أوجد قٌمة التعابٌر التالٌة ‪-:‬‬
‫المطلوب إجراء المؤثرات الخاصة بالبت على هذٌن المتغٌرٌن‬ ‫‪a) x | y‬‬
‫‪ ،‬مع تحوٌل الناتج الى ما ٌقابله بالنظام الثمانً والستة عشري‪.‬‬

‫مؤثر )&(‬ ‫أ‪-‬‬ ‫‪x‬‬ ‫‪= 0001 1001‬‬


‫‪y‬‬ ‫‪= 0001 0100‬‬
‫‪x‬‬ ‫‪= 0000 0100‬‬
‫‪x|y = 0001 1101‬‬
‫‪y‬‬ ‫‪= 0000 0111‬‬
‫‪x&y = 0000 0100‬‬ ‫‪x|y = 29‬‬ ‫بالنظام العشري‬

‫‪b) a & b‬‬


‫‪ o‬بالنظام الثمانً ‪000 -:‬‬
‫‪ o‬بالنظام السداسً عشر ‪0x4 -:‬‬ ‫‪a‬‬ ‫‪= 0100 0001‬‬
‫ب‪ -‬مؤثر )|(‬ ‫‪b‬‬ ‫‪= 0100 0110‬‬
‫‪a&b = 0100 0000‬‬
‫‪x‬‬ ‫‪= 0000 0100‬‬
‫‪y‬‬ ‫‪= 0000 0111‬‬ ‫بالنظام العشري ‪a&b = 64‬‬
‫‪x|y = 0000 0111‬‬ ‫‪c) x ^ b‬‬

‫‪ o‬بالنظام الثمانً ‪007 -:‬‬ ‫‪x‬‬ ‫‪= 0001 1001‬‬


‫‪ o‬بالنظام السداسً عشر ‪0x7 -:‬‬ ‫‪b‬‬ ‫‪= 0100 0110‬‬
‫مؤثر )^(‬ ‫ج‪-‬‬ ‫‪a^b = 0101 1111‬‬
‫‪x‬‬ ‫‪= 0000 0100‬‬ ‫‪a^b = 95‬‬ ‫بالنظام العشري‬
‫‪y‬‬ ‫‪= 0000 0111‬‬
‫‪d) y>>2‬‬
‫‪x^y = 0000 0011‬‬
‫‪y>>2 = 0000 0101‬‬
‫‪ o‬بالنظام الثمانً ‪003 -:‬‬
‫‪ o‬بالنظام السداسً عشر ‪0x3 -:‬‬ ‫‪y>>2 = 5‬‬ ‫بالنظام العشري‬

‫مؤثر )~(‬ ‫د‪-‬‬ ‫‪e) x<<2‬‬


‫‪x‬‬ ‫‪= 0000 0100‬‬ ‫‪x<< 2 = 0110 0100‬‬
‫‪~ x = 1111 1011‬‬ ‫‪x<<2 = 100‬‬ ‫بالنظام العشري‬
‫بالنظام العشري ‪-5‬‬ ‫‪o‬‬
‫‪f) ~(y|b) y‬‬ ‫‪= 0001 0100‬‬
‫‪y‬‬ ‫‪= 0000 0111‬‬ ‫‪b‬‬ ‫‪= 0100 0110‬‬
‫‪y|b = 0101 0110‬‬
‫‪~y = 1111 1000‬‬
‫‪ o‬بالنظام العشري ‪-8‬‬ ‫‪~(y|b)= 1010 1001‬‬
‫‪~(y|b)= -87‬‬ ‫بالنظام العشري‬

‫الباب الثامن‬ ‫‪Page 41‬‬


‫" الطبعة الرابعة‬++‫حل تمارين كتاب "أساليب البرمجة بلغة سي‬
298 4289787 "++‫إعداد م – محمد أحمد دريبيكة "مبرمج لغة سي‬
‫) اكتب برنامجا مهمته كتابة األعداد العشرٌة الصحٌحة‬3 ) )3( ‫ باقً (طرٌقة حل أخرى لتمرٌن رقم‬
‫ بنظام العد الثنائً والثمانً والستة‬64,32,16,8,4,2 bitfunction(a);
. ‫عشري‬ cout<<oct<<a<<"\t"<<hex<<a<<endl;

#include<iostream.h> bitfunction(b);
#include<math.h> cout<<oct<<b<<"\t"<<hex<<b<<endl;
void bitfunction(int );
main() bitfunction(c);
{ cout<<oct<<c<<"\t"<<hex<<c<<endl;
int a=2,i=1; bitfunction(d);
while(a<=64) cout<<oct<<d<<"\t"<<hex<<d<<endl;
{
bitfunction(a); bitfunction(e);
cout<<oct<<e<<"\t"<<hex<<e<<endl;
cout<<oct<<a<<"\t"<<hex<<a<<endl; }
a=pow(2,++i);
void bitfunction(int a)
}
{
}
int m=128;
void bitfunction(int a) for(int i=1;i<=8;i++)
{ {
int m=128; cout.put(m&a ? '1' : '0');
for(int i=1;i<=8;i++)
{ a<<=1;
cout.put(m&a ? '1' : '0'); }
cout<<"\t";
a<<=1; }
}
cout<<"\t"; ‫ فمثال‬، ‫) اكتب برنامجا ٌعكس كل بت فً الباٌت‬0
} 01100010 ‫ تصبح‬10011101

#include<iostream.h>
)3( ‫ طرٌقة حل أخرى لتمرٌن رقم‬
main()
#include<iostream.h>
{
void bitfunction(int );
int j,x,y,m=128;
main()
{ cout<<"Enter number\n";
cin>>x;
int a=2,b=4,c=16,d=32,e=64; y=x;

‫الباب الثامن‬ Page 42


‫" الطبعة الرابعة‬++‫حل تمارين كتاب "أساليب البرمجة بلغة سي‬
298 4289787 "++‫إعداد م – محمد أحمد دريبيكة "مبرمج لغة سي‬
)0( ‫ باقً إجابة تمرٌن رقم‬ -: ً‫) إذا ما اعطٌت جملة اإلعالن ٌتبعها الدالة كاآلت‬6
for(j=1;j<=8;j++) int a=14,b=7;
{
cout.put(m&x ? '1':'0'); void bitfunction(int number)
x<<=1; {
} int m=128;
cout<<"\n"; for(int i=1;i<=8;++i)
{
for(j=1;j<=8;j++) cout.put(m&number ? '1' : '0');
{ if(i%4==0)
cout.put(m&y ? '0' : '1'); ‫لعكس كل بت بالباٌت‬ cout<<" ";
y<<=1; number<<=1;
} }
} }
‫ فً نظام شفرة‬m ‫) المطلوب كتابة برنامج إلزاحة قٌمة الحرف‬5
ً‫ فً النظام الثنائ‬01101101 ‫اآلسكً وهً القٌمة العددٌة‬ a
‫أربعة مواقع للٌسار وثالثة مواقع للٌمٌن مع تحوٌل الناتج إلى ما‬ cout<<endl<<"A="<<dec<<a<<"B="<<hex<<a<<" ";
. ‫ٌقابله فً ٌقٌة األنظمة فً كل مرة‬ bitfunction(a);
#include<iostream.h> ‫الناتج‬
void bitfunction(int ); A=14 B=e 0000 1110
main()
{ b
char x='m'; cout<<endl<<"A="<<dec<<~a<<"B="<<hex<<
~a<<" ";
x=x<<4; bitfunction(~a);
bitfunction(x); ‫الناتج‬
cout<<int(x)<<"\t"<<oct<<int(x)<<"\t"<<hex<<int(x);
A=-15 B=fffffff1 1111 0001
cout<<"\n";
x=x>>3; c
bitfunction(x); int c= a&b;
cout<<int(x)<<"\t"<<oct<<int(x)<<"\t"<<hex<<int(x); cout<<endl<<"A="<<dec<<c<<"B="<<hex<<c<<" ";
} bitfunction(c);
void bitfunction(int x) ‫الناتج‬
{ A=6 B=6 0000 0110
int m=128;
for(int i=1;i<=8;i++) d
int c= a|b;
{
cout<<endl<<"A="<<dec<<c<<"B="<<hex<<c<<" ";
cout.put(m&x ? '1' : '0'); bitfunction(c);
x<<=1; ‫الناتج‬
} A=15 B=f 0000 1111
}

‫الباب الثامن‬ Page 43


‫" الطبعة الرابعة‬++‫حل تمارين كتاب "أساليب البرمجة بلغة سي‬
298 4289787 "++‫إعداد م – محمد أحمد دريبيكة "مبرمج لغة سي‬

e
int c= a^b;
cout<<endl<<"A="<<dec<<c<<"B="<<hex<<c<<" ";
bitfunction(c);
‫الناتج‬
A=9 B=9 0000 1001

f
int c= a>>2;
cout<<endl<<"A="<<dec<<c<<"B="<<hex<<c<<" ";
bitfunction(c);
‫الناتج‬
A=3 B=3 0000 0011

g
int c= b<<3;
cout<<endl<<"A="<<dec<<c<<"B="<<hex<<c<<" ";
bitfunction(c);
‫الناتج‬
A=56 B=38 0011 1000

‫الباب الثامن‬ Page 44

You might also like