PDA

View Full Version : دوستان چرا خروجی این الگوریتم که And استفاده کرده است باید 2 بشود؟



complexcoding
دوشنبه 29 اسفند 1390, 14:40 عصر
سلام دوستان
دوستان چرا خروجی این الگوریتم که And استفاده کرده است باید 2 بشود؟

X=9;

Printf(" %d %d ", x >> 2 & x << 1 );

sharin
دوشنبه 29 اسفند 1390, 14:57 عصر
سلام.

x>>2 يعني x دو بار يه راست شيفت داده بشه ، x=9 ، مراحل شيفت دادن رو در زير ببينيد :

x : 00001001 Decimal=9
x>>1 : 00000100 Decimal=4
x>>2 : 00000010 Decimal=2
و x<<1 يعني يك شيفت به چپ:

x : 00001001 Decimal=9
x<<1 : 00010010 Decimal=18
حالا 2 تا عبارت داريم كه بايد با هم & بشن

x>>2 : 00000010 Decimal=2
&
x<<1 : 00010010 Decimal=18
خوب از سمت چپ دونه دونه بيتي & كن.
همشون 0 مي شن به جز بيت شماره 1 كه در هر 2 تا 1 هست و حاصل كل مي شه 00000010 كه مقدارش 2 دسيمال هست.