二进制的两种写法
常规写法
# include <cstdio>
# include <iostream>
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 <cstdio>
# include <iostream>
# include <bitset>
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 ;
}