سلام بر دوستان
برنامه ای می خوام که اختلاف بیت ها رو بهم بگه تو خروجی مثلا 1111 و 0000 که در هر چهار بیت با هم اختلاف دارند یا عدد 110 و عدد 111 که در یک بیت اختلاف دارند از همه کسانی که بتونند کمک کنند ممنون میشم
با تشکر
سلام بر دوستان
برنامه ای می خوام که اختلاف بیت ها رو بهم بگه تو خروجی مثلا 1111 و 0000 که در هر چهار بیت با هم اختلاف دارند یا عدد 110 و عدد 111 که در یک بیت اختلاف دارند از همه کسانی که بتونند کمک کنند ممنون میشم
با تشکر
این یه مدلشه :
#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;
}
امیدوارم کمک منه !
سلام
من این شرطی while رو متوجه نمیشم هر چی تریس می کنم امکان داره توضیح بدی
با تشکر
شما اول اون دو عدد رو باهم xor میکنی ، بعد اگر در هر بیتی اختلاف باشد توی عدد حاصل 1 داریم بعد مییاییم ای عدد رو در هر بار به سمت راست شیفت میدیم و با 1 and میکنیم اگر حاصل 1 شد که یعنی توی این بیت اختلاف داشتیم و count رو یکی اضاف میدهیم و همین کار را ادامه میدیم تا در نهایت عددمون صفر بشه (و از شرط بیرون میاییم) که تمامیم الته باید حواسمون باشه رو unsigned کار کنیم و گرنه خدا میدونه چی میشه !
چیزی نمیشه. تو هر دو حالت با علامت و بدون علامت فرقی نداره.لته باید حواسمون باشه رو unsigned کار کنیم و گرنه خدا میدونه چی میشه !