C++中二进制的两种写法

二进制的两种写法

常规写法
#include
#include
using namespace std;
//整体思路:先把二进制转为十进制 int string_to_num(string str)
{int len = str.length();//str.length()是c++中获取字符串长度的函数 int result = 0;for(int i = 0;i<len;++i){result = result*2 + (str[i] - '0');//字符串转十进制语句 // str[i] - '0'是为了把字符转成数字//比如字符'1'-字符'0'=数字1; }//字符串转数字,位权是多少乘以多少,//比如在这里我们要把二进制转为十进制//就用result = result*2 + (str[i] - '0');//如果十进制转就*10,多少进制就*多少。 return result;
} 
int main()
{string num1,num2;char ch;cin >> num1 >> ch >>num2;long long a = string_to_num(num1);// 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){//特殊情况直接输出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 //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数组只能存0和1,即只能储存二进制数//bitset函数的作用是自动把十进制数换成二进制数 bitset<64> bit(result);//64是定义的bit数组的长度,即表明bitset 的大小 register int index = 63;//bit(result)里面的result表示要转换的十进制数; //过滤前导0 ,因为bitset函数储存二进制数是反向储存的 for( ; index>=0 && bit[index] == 0;--index){ }//如果为0,index就往后移一位 for( ; index>=0; --index){cout << bit[index];//输出过滤后的二进制数 } cout << endl;return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部