手写C++位运算(与、或、异或)
大概是太闲得慌,练练手写了个这玩意儿。
// Author:PanDaoxi#include using namespace std;// 十进制转二进制int a[10001],l;void f(int n){ if(n==0) return; a[l++]=n%2; f(n/2);}string tentotwo(int n){ f(n); string s=""; for(int i=l-1;i>=0;i--){ s+=a[i]+'0'; } memset(a,0,sizeof(a)); l=0; return s;}// 二进制转十进制int twototen(string s){ int b[11]={},sum=0,k=0; for(int i=0;i>a>>c>>b; // 转换为二进制 string s1,s2,result=""; s1=tentotwo(a),s2=tentotwo(b); // 补齐前导0 int l1=s1.size(),l2=s2.size(); while(min(l1,l2)=0;i--){ // 同真则真 result=((s1[i]=='1'&&s2[i]=='1')?"1":"0")+result; } } // 按位或 else if(c=='|'){ for(int i=l1-1;i>=0;i--){ // 一真则真 result=((s1[i]=='1'||s2[i]=='1')?"1":"0")+result; } } // 按位异或 else if(c=='^'){ for(int i=l1-1;i>=0;i--){ // 不同为真 result=((s1[i]!=s2[i])?"1":"0")+result; } } else cout<<0; // 再转换为10进制 cout<
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~