C++中十进制怎么转换成二进制???

 时间:2024-10-13 17:02:38

1、计算机导论说过,计算机将数据存储为补码所以进制转换的实现就可以通过位运算实现了对于正数直接输出补码就可以了对于负数先将补码减1再按位取反,得到原码,将第1位换为-号就可以了举个关于负数的栗子

2、例如-1补码 :11111111111111111111111111111111减1之后就是11111111111111111111111111111110按位取反00000000000000000000000000000001第一位替换为-号-0000000000000000000000000000001按照这个思路很容易完成二进制转换

3、下面是C++程序代码#i艘绒庳焰nclude<cstdio>#include<stack>#include<iostream>using namespace std;void showbin(int a){ int l=32; stack <int> num; if(a>>(l-1)&1==1)//补码转换成原码 { a--; a=~a; a|=1<<(l-1); } for(int i=0;i<l;i++)//每个bit入栈 { int b=a>>i&1; num.push(b); } cout<<"二进制:"; if(num.top()==1) { cout<<'-'; l--; num.pop(); } for(int i=0;i<l;i++) { cout<<num.top(); num.pop(); } cout<<endl;}void showybin(int a){ int l=32; stack <int> num; if(a>>(l-1)&1==1)//补码转换成原码 { a--; a=~a; a|=1<<(l-1); } for(int i=0;i<l;i++)//每个bit入栈 { int b=a>>i&1; num.push(b); } cout<<"原码 :"; for(int i=0;i<l;i++) { cout<<num.top(); num.pop(); } cout<<endl;}void showcbin(int a)//显示补码{ int l=32; stack <int> num; for(int i=0;i<l;i++)//每个bit入栈 { int b=a>>i&1; num.push(b); } cout<<"补码 :"; for(int i=0;i<l;i++) { cout<<num.top(); num.pop(); } cout<<endl;}int main(){ int a; while(1) { cin>>a; showbin(a); showcbin(a); showybin(a); } return 0;}

  • 香肠烟熏炉的操作过程
  • 射水机游艺机如何玩?
  • 如何惩治熊孩子
  • 金铲铲之战赌狗流阵容推荐
  • 怎么做才可以挽回女朋友?
  • 热门搜索
    热爱祖国手抄报 关于母亲节的手抄报 元宵节的手抄报 关于诗歌的手抄报 关于足球的手抄报 文明校园手抄报图片 文明伴我行手抄报 中秋手抄报 防溺水手抄报内容文字 名人名言手抄报