在C++中,默认状态下,数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。但是二进制没有默认的输出格式,需要自己写函数进行转换。

输入整数n , 则在C++中cout<<hex<<n; cout<<oct<<n; cout<<dec<<n; 会分别将整数n以十六进制、八进制和十进制的形式输出

代码注解

#include <iostream>
#include <bitset>using namespace std;int main(void)
{int i,j,k,l;cout<<"Input i(oct),j(hex),k(hex),l(dec):"<<endl;cin>>oct>>i;  //输入为八进制数cin>>hex>>j;  //输入为十六进制数cin>>k;   //输入仍为十六进制数cin>>dec>>l; //输入为十进制数cout<<"hex:"<<"i = "<<hex<<i<<endl;cout<<"dec:"<<"j = "<<dec<<j<<'\t'<<"k = "<<k<<endl;cout<<"oct:"<<"l = "<<oct<<l;cout<<dec<<endl;  //恢复十进制数输出状态return (0);
}

调试运行

思考与提示

1.    在接收输入时,必须在cin中指明数制,否则从键盘输入时,不认八进制和十六进制数开头的0和0x标志。指明后可省略0和0x标志。

2.    进制控制只适用于整型变量,不适用于实型和字符型变量。

3.    输入数据的格式、个数和类型必须与cin中的变量一一对应,否则不仅使输入数据错误,而且影响后面其他数据的正确输入。

4.    在cin或cout中指明数制后,该数制将一直有效,直到重新指明使用其他数制。

下面是C++中二进制输出的总结

代码注解

#include <iostream>
#include <list>
#include <bitset>
#include <iomanip>using namespace std;//递归输出二进制函数
void BinaryRecursion(int n)
{int a;a = n % 2; // 取余n = n >> 1;  //右移一位 相当于除以2if(0 != n){BinaryRecursion(n);}cout<<a;
}//使用容器转换二进制
void BinaryVector(int n)
{int temp;temp = n;list <int> L;while(0 != temp){L.push_front(temp % 2);temp = temp >> 1;}for(list <int>::iterator iter = L.begin(); iter != L.end(); iter++){cout<<*iter;}cout <<endl;
}//一般方法,32位,逐步与1做与运算
void Binarycout(int n)
{for(int i = 31; i>= 0; i--){cout<<((n>>i)&1);}cout<<endl;
}//使用bitset转换二进制
void BinaryBitset(int n)  //使用此函数需要包含bitset头文件
{cout<<bitset<sizeof(int)*8>(n)<<endl;
}int main()
{int a = 1045, b = 2;int c;c = a + b;cout<<setw(20)<<"BinaryRecursion("<<c<<"):";BinaryRecursion(c);cout<<endl;cout<<setw(20)<<"BinaryVector("<<c<<"):";BinaryVector(c);cout<<setw(20)<<"Binarycout("<<c<<"):";Binarycout(c);cout<<setw(20)<<"BinaryBitset("<<c<<"):";BinaryBitset(c);return (0);
}
调试运行

思考与提示

//递归输出二进制函数
void BinaryRecursion(int n)
{int a;a = n % 2; // 取余n = n >> 1;  //右移一位 相当于除以2if(0 != n){BinaryRecursion(n);}cout<<a;
}
递归层次

使用递归的代价是十分巨大的:它会消耗大量的内存!!递归循环时它用的是堆栈,而堆栈的资源是十分有限的。假设调用该递归函数的主函数为第0层,则从主函数调用递归函数进入第1层;从第i层递归调用本身为进入“下一层”,即第i+1层。反之,退出第i层递归应返回至“上一层”,即第i-1层。

为了保证递归函数正确执行,系统需设立一个“递归工作栈”作为整个递归函数运行期间使用的数据存储区。每一层递归所需信息构成一个“工作记录”,其中包括所有的实参、所有的局部变量以及上一层的返回地址。

每进入一层递归,就产生一个新的工作记录压入栈顶。每退出一层递归就从栈顶弹出一个工作记录,则当前执行层的工作记录必须是递归工作栈栈顶的工作记录,称这个记录为“活动记录”,并称指示活动记录的栈顶指针为“当前环境指针”。

如上图所示:当n 不等于0时,保存当前层的“工作记录”,然后递归调用进入下一层,直到n 等于0 ,此时是第四层,把当前层的a值
1 打印出来,然后退出第4层递归,返回至“上一层”即第4 – 1 层,即第3层。然后打印此层的a值 0,依次递归返回打印其余层。最后得到结果为
1010.

指定数据输出宽度:用C++提供的函数setw()指定输出数据项的宽度。setw()括号中通常给出一个正整数值,用于限定紧跟其后的一个数据项的输出宽度。如:setw(8)表示紧跟其后的数据项的输出占8个字符宽度。setw()只能限定紧随其后的一个数据项,输出后即回到默认输出方式。使用setw()必须在程序开头再增加一句: #include<iomanip>

转载链接:C++ 二进制、十进制、八进制和十六进制 转换

C++ 二进制、十进制、八进制和十六进制 转换相关推荐

  1. PHP dechex,PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin() 函数,如下实例 echo decbin(12); //输出 1100 echo decbin(26); / ...

  2. php八进制十六进制,php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码...

    十进制转换为二进制.八进制.十六进制 从十进制向其它进制转换,用的是就用该数字不断除以要转换的进制数,读取余数.连接一起就可以了. 复制代码代码如下: /** *十进制转二进制.八进制.十六进制不足位 ...

  3. 二进制、八进制和十六进制

    我们平时使用的数字都是由0~9共十个数字组成的,因为只有0~9共十个数字,所以叫做十进制.进行加法运算时逢十进一(满十进一),进行减法运算时借一当十,这就是十进制.借助同样的思想,计算机中有二进制.八 ...

  4. 用‘栈’的思想编写一个十进制转换二进制、八进制或十六进制的程序

    用'栈'的思想编写一个十进制转换二进制.八进制或十六进制的程序 根据进制转换方法,如十进制向二进制转换,将转换的十进制整数除以二进制基数(2),得到余数和商,如果商不为0,该商继续做被除数,除以基数, ...

  5. 十进制与二进制,八进制,十六进制的转换

    (一)数制       计算机采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径,节省设备等优点,为了便于描述,又常用八.十六进制作为二进制的缩写.特点: (1)逢n进一 ...

  6. bash 将二进制转换为十进制_用‘栈的思想编写一个十进制转换二进制、八进制或十六进制的程序...

    用'栈'的思想编写一个十进制转换二进制.八进制或十六进制的程序 根据进制转换方法,如十进制向二进制转换,将转换的十进制整数除以二进制基数(2),得到余数和商,如果商不为0,该商继续做被除数,除以基数, ...

  7. 定义并调用函数 十进制转二进制_用‘栈的思想编写一个十进制转换二进制、八进制或十六进制的程序...

    用'栈'的思想编写一个十进制转换二进制.八进制或十六进制的程序 根据进制转换方法,如十进制向二进制转换,将转换的十进制整数除以二进制基数(2),得到余数和商,如果商不为0,该商继续做被除数,除以基数, ...

  8. python十进制转八进制_Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)...

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer num ...

  9. python--预测未来子女的身高、计算能量的消耗、为自己的手机充值、将指定的十进制数转换成二进制、八进制、十六进制

    将指定的十进制数转换成二进制.八进制.十六进制 def fun():num=int(input('请输入一个十进制的整数:'))print(num,'的二进制数为:',bin(num)) #内置函数- ...

  10. python 自定义进制转换,Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)...

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer num ...

最新文章

  1. 请在请求中携带deviceid参数_实战SpringCloud通用请求字段拦截处理
  2. oraToolKit Oracle安装辅助工具的使用方法
  3. 【Java入门】package包
  4. 图像局部显著性—点特征(SURF)
  5. java流的传递方式是_如何在方法中流式传输Java List(Varargs)的值?
  6. UI素材模板|网站后台管理的表单可临摹优秀模板
  7. 图片切换ajax,jQuery AJAX全屏图文幻灯切换
  8. 关联规则-策略挖掘中必不可少的算法
  9. 关于DataFactory工具使用说明(一)-----创建数据表
  10. 2022-XTU程设练习1
  11. 7月第3周回顾:裁员潮袭卷IT人 雅虎服“软”愿被收购
  12. 49.SQLite 数据库 编程
  13. Android Studio中Git更新本地的远程(remote)branch列表?
  14. hadoop之hdfs命令详解
  15. 程序分析之中间表示(Intermediate Representation)
  16. 孤单是对你最好的惩罚
  17. 把书读薄:《上帝掷骰子吗-量子物理史话》
  18. 【Android】Android的应用架构
  19. Linux建立软链接、硬链接
  20. 求满足条件的整数个数

热门文章

  1. 防松动的吊环螺钉-特尔姆吊点
  2. 富文本编辑器使用 ( 手动上传图片视频 动态插入到标签中 )
  3. PFA试剂瓶的特点以及优势
  4. 复制那些复制不了的屏幕上的网页文字和图片文字
  5. ThreadPool线程池
  6. 解决报错显示:log4j:WARN No appenders could be found for logger .
  7. 1.这就是搜索引擎:核心技术详解 --- 搜索引擎及其技术架构
  8. electron-builder 教程
  9. php smarty语法,Smarty模板引擎视图输出基本语法解析
  10. php smarty 原理,php模板原理PHP模板引擎smarty模板原理浅谈