View Full Version : به دست آوردن تعداد اختلاف بیت ها
shojaei_moh
سه شنبه 10 اردیبهشت 1392, 10:13 صبح
سلام بر دوستان
برنامه ای می خوام که اختلاف بیت ها رو بهم بگه تو خروجی مثلا 1111 و 0000 که در هر چهار بیت با هم اختلاف دارند یا عدد 110 و عدد 111 که در یک بیت اختلاف دارند از همه کسانی که بتونند کمک کنند ممنون میشم
با تشکر
hadi0x7c7
سه شنبه 10 اردیبهشت 1392, 13:07 عصر
این یه مدلشه :
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int p = m ^ n;
int count = 0;
while(p) {
if(p & 1)
count++;
p>>=1;
}
cout << count << endl;
}
امیدوارم کمک منه !
shojaei_moh
پنج شنبه 12 اردیبهشت 1392, 20:44 عصر
سلام
من این شرطی while رو متوجه نمیشم هر چی تریس می کنم امکان داره توضیح بدی
با تشکر
hadi0x7c7
جمعه 13 اردیبهشت 1392, 00:39 صبح
شما اول اون دو عدد رو باهم xor میکنی ، بعد اگر در هر بیتی اختلاف باشد توی عدد حاصل 1 داریم بعد مییاییم ای عدد رو در هر بار به سمت راست شیفت میدیم و با 1 and میکنیم اگر حاصل 1 شد که یعنی توی این بیت اختلاف داشتیم و count رو یکی اضاف میدهیم و همین کار را ادامه میدیم تا در نهایت عددمون صفر بشه (و از شرط بیرون میاییم) که تمامیم الته باید حواسمون باشه رو unsigned کار کنیم و گرنه خدا میدونه چی میشه !
Ananas
جمعه 13 اردیبهشت 1392, 09:25 صبح
لته باید حواسمون باشه رو unsigned کار کنیم و گرنه خدا میدونه چی میشه !
چیزی نمیشه. تو هر دو حالت با علامت و بدون علامت فرقی نداره.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.