PDA

View Full Version : سوال: اختلاف بیت ها



shojaei_moh
پنج شنبه 12 اردیبهشت 1392, 21:14 عصر
می خوام دو تا عدد از ورودی بخونم تبدیل به باینری کنه و سپس بگه که چند تا از بیت ها مثل هم نیستند مثلا 10 به باینری می شود 1010 و 12 می شود 1100 که سه تا از بیت ها اختلاف دارند ممنون میشم کسی کمک کنه
با تشکر

Ananas
جمعه 13 اردیبهشت 1392, 08:42 صبح
سلام.
باید از عملیات بیتی استفاده کنید. مثال :
wchar_t * Int32ToBit(wchar_t * pOut, __int32 X)
{
for (int i = 0; i < 32; i++)
{
if ( (X & (1L << i)) == 0L)
pOut[31 - i] = L'0';
else
pOut[31 - i] = L'1';
};
pOut[32] = wchar_t(0);
return pOut;
}

تو این قسمت :
(1L << i)
عدد یک رو به چپ شیفت می کنیم تا با عدد اصلی مقایسه بشه و از & (اند بیتی) استفاده میکنیم تا ببینیم کدوم بیت ها بین X و 1 ای که به چپ شیفت کردیم ، مشترکند. در واقع تو یک بیت میتونن دوتاشون 1 باشن پس اگه نتیجه ی & عددی غیر از صفرباشه می فهمیم که عدد X هم اون بیتش فعاله.