位运算按位异或的程序

来源:百度知道 编辑:UC知道 时间:2024/05/14 08:31:06
有没有不用数字分离,就是一位一位分出来的二进制指定某一位或者几位取反的算法。提供思路也行啊。
我这里有一个10进制转化2进制的算法,求各位高手在我这个程序上补充出求指定的位数取反的算法。程序课执行的话我多加50分。
#include <iostream>
#include <string>
#include <cmath>
using namespace std;

string Binary(int n)
{
return n > 0 ? Binary(n/2) + static_cast<char>(n%2 + '0') : "";
}

double to_double(string str)
{
return str.size() > 0 ?
(str[0]-'0') * pow(10.0, static_cast<int>(str.size())-1) + to_double(str.substr(1)) : 0;
}

int main()
{
int n;
cout.setf(ios_base::fixed);
cout.precision(0);
cin>>n;
cout << to_double(Binary(n))<<endl;
}

异或运算符是^
就是数字shift+6那个键。
比如你要对数字n的1,2,4,位取反,就
n^1011
对什么位取反就设置那一位为1.

10进制转换2进制用电脑自带的转换就行了啊。
自己做转换多出来多少步了。
浪费电脑运算时间。

对指定为去反或取值,对应相应内容异或或者与操作就差不多了。