利用代码计算原码,反码和补码
最近复习到数字逻辑的时候,看到的这一章节,想去上网找个计算器转换下,结果没有...
我们没有办法,没有办法,只好自己动手写了一个
代码能够控制数字码的长度,对于长度不适合的处理的部分,回来可能会添加个自动配置长度的函数,但是现在还是需要手动输入长度
现在没这么多的需求进行完善;
TODO//
1.可以根据输入的数字,自动确定合适的长度,也能根据选择的长度来;
2.完全可以用位运算进行解决,但是不够直观
3.对于负数的处理不够完善,这一点和1 关系密切,正是处理问题关键所在。
#include <bits/stdc++.h> using namespace std; string s; void getorginalcode(int x,int len) { for(int i=len;i>=0;i--) { if(x&(1<<i)) { s.push_back('1'); } else { s.push_back('0'); } } } int main() { int n; while(~scanf("%d",&n)) { int len; cout<<"Please input the code len you need;len = 4,8,16,32,etc...."<<endl; scanf("%d",&len); s.clear(); cout<<"Please input the code you need : 原码(org),补码(fills),反码(rev)"<<endl; string opr; cin>>opr; if(opr=="org") { getorginalcode(n,len); cout<<s<<endl; } else if(opr=="fills") { getorginalcode(n,len); if(n>=0) cout<<s<<endl; else { for(int k=0;k<s.length();k++) { if(s[k]-'0') { s[k]='0'; } else { s[k]='1'; } } s[0]='1';//符号位 int jw = 1; for(int j = s.length()-1;j>=0&&jw;j--) { if(s[j]=='1') { s[j] = '0'; jw = 1; } else { s[j] = '1'; jw = 0; } } } } else if(opr=="rev") { getorginalcode(n,len); if(n>=0) { cout<<s<<endl; } else { for(int k=0;k<s.length();k++) { if(s[k]-'0') { s[k]='0'; } else { s[k]='1'; } } s[0]='1';//符号位 cout<<s<<endl; } } } }
相关推荐
徐建岗网络管理 2020-06-07
mbcsdn 2020-04-25
徐建岗网络管理 2019-12-29
nimeijian 2019-10-23
xiaoxiaoCNDS 2019-10-23
nimeijian 2019-10-23
morexyoung 2019-10-23
码上开始 2019-06-28
86570791 2019-06-28
yangyang 2018-11-13
BlowfishKing 2016-10-31
蚂蚁的窝 2014-12-03
zzpdljd 2012-12-14
pythontty 2018-10-15
BitTigerio 2018-02-23
硅谷密探 2018-01-09
微软信仰中心 2018-01-03
MATLAB 2017-12-05
互联网与你我的世界 2017-12-05