二进制的两种写法
常规写法
#include
#include
using namespace std;
int string_to_num(string str)
{int len = str.length();int result = 0;for(int i = 0;i<len;++i){result = result*2 + (str[i] - '0');}return result;
}
int main()
{string num1,num2;char ch;cin >> num1 >> ch >>num2;long long a = string_to_num(num1);long long b = string_to_num(num2);long long result;if(ch == '+'){result = a+b;}else{result = a-b;}if(result == 0){cout << 0 << endl;return 0;}int arr[10000],index = 0;while(result != 0){ arr[index] = result % 2;index++; result /= 2; }for(register int i = index-1; i >= 0;--i){cout << arr[i];}cout << endl;return 0;
}
使用bitset的写法
#include
#include
#include
using namespace std;int string_to_num(string str)
{int len = str.length(); int result = 0;for(int i = 0;i<len;++i){result = result*2 + (str[i] - '0');}return result;
}
int main()
{string num1,num2;char ch;cin >> num1 >> ch >>num2;long long a = string_to_num(num1);long long b = string_to_num(num2);long long result;if(ch == '+'){result = a+b;}else{result = a-b;}if(result == 0){cout << 0 << endl;return 0;}bitset<64> bit(result);register int index = 63;for( ; index>=0 && bit[index] == 0;--index){ }for( ; index>=0; --index){cout << bit[index];} cout << endl;return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!