View Full Version : عبارات A=A>>1,A=A<<1,و... برای چه منظوری هستند؟
MiniMicro
پنج شنبه 29 دی 1390, 12:53 عصر
با سلام خدمت همه دوستان گرامی.
چند تا سوال از خدمتتون داشتم اگر امکانش هست من رو راهنمایی کنید.
دستورات زیر چه مفهومی دارند و چطور می تونم ازشون استفاده کنم.
A=A>>1;
A=A<<1;
A=A&5;
A=A|5;
A=A^5; //(XOR)
soorena
پنج شنبه 29 دی 1390, 13:40 عصر
سلام
دستور اول یک دونه شیفت به راست هستش که عدد رو نصف میکنه و معادل
a=floor(a/2)
هستش.
دستور دوم عدد رو دو برابر میکنه.
a=a*2
دستور سوم A رو با ۵ and میکنه یعنی همهٔ بیتها ۰ میشن ولی بیتهای ۱ و3 همونی که هستن میمونن.
دستور چهارم A رو با ۵ or میکنه یعنی همهٔ بیتها همونی که هستن میمونن ولی بیت ۱ و 3 تبدیل به ۱ میشن.
دستور ۵ هم میاد بیتهای ۱ و ۵ رو در A قرینه میکنه یعنی از ۰ به ۱ و از ۱ به ۰ تبدیل میکنه.
MiniMicro
پنج شنبه 29 دی 1390, 18:07 عصر
جناب soorena ممنون از اینکه زحمت کشیدید و راهنمایی کردید فقط اگر امکان داره یه چند تا مثال از هر کدون بزنید تا بهتر مفهوم بشه
و البته دستور
floor رو هم بفرمایید چه نوع تابعی هست.
soorena
جمعه 30 دی 1390, 00:52 صبح
و البته دستور
floor
چه نوع تابعی هست. همون جز صحیح هستش.
برای مثال میتونی از گوگل استفاده کنی.
maktoom
سه شنبه 04 بهمن 1390, 23:17 عصر
سلام
خب این یه استفاده از این دستورات:
#include <stdio.h>
#include <conio.h>
int main()
{
int n, x;
printf( "How many disks? " );
scanf( "%d", &n );
printf("\n");
for (x=1; x < (1 << n); x++)
printf( "move from tower %i to tower %i.\n",(x&x-1)%3, ((x|x-1)+1)%3 );
getch();
return 0;
}
این راه حل باینری برای مسئله برج های هانویه.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.