-
کد:
main()
{
char ch; int i;
for(ch='A';ch='Z';ch++){
cout<<ch<<" : ";
for(i=128;i>0:i=i/2){
if(i&ch)cout<<"1";
else cout<<"0";
}
cout<<"\n";
}//end of for
return 0;
}[/LEFT][/CENTER]
[این برنامه به این صورت کار میکند که در هر نوبت مقدار i طوری مشخص میشود که با هر مقایسه فقط یکی از بیت ها تنظیم میشود.چون در یک بایت . بیت با مرتبه بالاتر بیانگر مقدار128 است از این مقدار به عنوان نقطه شروع استفاده کردیم.در هر دور حلقه i نصف میشه.این کار باعث میشه تا بیت بعدی 1بشه و بقیه بیت ها 0بشن .به این صورت در هر دور حلقه یکی از بیت های ch تست میشن.اگر این بیت برابر1باشه مقایسه نتیجه ی درست بازمیگردونه و عدد 1 به خروجی فرستاده میشه.در غیر این صورت 0به خروجی فرستاده میشه......البته همینطور که someone گفتند بهتره از عملگر شیفت(در این برنامه شیفت به راست) استفاده بشه چون سرعت بیشتری نسبت به عمل ضرب و تقسیم داره.در واقع بهتره به جای i=i/2 بنویسیم i >>1 =i
-
کد:
#include<iostream.h>
main()
{
char ch;
int i;
for(ch='A';ch='Z';ch++){
cout<<ch<<" : ";
for(i=128;i>0:i=i/2){
if(i&ch)cout<<"1";
else cout<<"0";
}
cout<<"\n";
}//end of for
return 0;
}
این برنامه به این صورت کار میکند که در هر نوبت مقدار i طوری مشخص میشود که با هر مقایسه فقط یکی از بیت ها تنظیم میشود.چون در یک بایت . بیت با مرتبه بالاتر بیانگر مقدار128 است از این مقدار به عنوان نقطه شروع استفاده کردیم.در هر دور حلقه i نصف میشه.این کار باعث میشه تا بیت بعدی 1بشه و بقیه بیت ها 0بشن .به این صورت در هر دور حلقه یکی از بیت های ch تست میشن.اگر این بیت برابر1باشه مقایسه نتیجه ی درست بازمیگردونه و عدد 1 به خروجی فرستاده میشه.در غیر این صورت 0به خروجی فرستاده میشه......البته همینطور که someone گفتند بهتره از عملگر شیفت(در این برنامه شیفت به راست) استفاده بشه چون سرعت بیشتری نسبت به عمل ضرب و تقسیم داره.در واقع بهتره به جای i=i/2 بنویسیم i >>1 =i