PDA

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;
}

این راه حل باینری برای مسئله برج های هانویه.