C和C++的二进制,八进制,十六进制输出格式(全面版)

目录

前言

正文

示例

附录


前言

一般大家默认二进制,八进制,十进制,十六进制分别用字符:bin, oct, dec, hex 来表示,平时各种计算机语言的默认输出的格式都是十进制的。本文将集中演示C,C++语言的二进制,八进制,十六进制输出的写法。

正文

十进制转十六进制:

C++ 版本  ->         cout <<"十六进制:"<< hex <<num<<endl;

C     版本  ->         printf("十六进制:%#x\n",i);

ps1: C版本 %x会直接输出16进制数,%#x 的输出会带上0x的标志,如果'X'是大写,则带的标志也是大写0X。

ps2: C++前面使用了16进制输出后,后面不加hex标志,也会将默认打印改为16进制。8进制同理。

 

十进制转八进制:

C++ 版本  ->        cout <<"八进制:"<< oct <<num<<endl;

C     版本  ->        printf("八进制:%o\n",i);

 

十进制转二进制:

C或者C++的printf,cout可以实现直接输出八进制,十进制,十六进制数据,但是不支持直接的二进制输出,需要调用其它库函数。

其中C语言版本借助<stdlib.h>的itoa函数,调用方式: itoa(num, s, 2)。num:要转成二进制的数;s:提前定义好的char类型数组;2:二进制基数。

C++版本借助<bitset>库,调用方式bitset<len>(num),其中 len: 二进制输出的位数,提前自定义; num:要转成二进制的数。

 

C++ 版本  ->       cout <<"二进制:"<<bitset<10>(num) <<endl; //10是二进制位数,自定义为多少输出就是多少位,高位补0

C     版本  -> 

                          char s[10]; //自定义二进制数的位数,输出位数是实际所需位数

                          itoa(num,s,2);//转成字符串,基数为2             

                          printf("二进制:%s\n",s);


示例

定义:用不同进制输出99到102之间的数。

#include <iostream>
#include <stdio.h>
#include <bitset>
#include <stdlib.h>

using namespace std;

int main(){
	
	char s[10]; //自定义二进制数的位数,输出位数是实际所需位数
	for(int num=99;num<102;num++){
		//C++版本
		printf("--------------------number(dec):%d\n",num);
		cout<<"----C++----"<<endl;
		//cout <<"十进制:"<< dec <<num<<endl;
		cout <<"十六进制:"<< hex <<num<<endl;		
		cout <<"八进制:"<< oct <<num<<endl;
		cout <<"二进制:"<<bitset<10>(num) <<endl;//10是二进制位数,自定义为多少输出就是多少位,高位补0
		cout<<"----C----"<<endl;
		//C语言版本 
		//printf("十进制:%d\n",num); 
		printf("十六进制:%#x\n",num);
		printf("八进制:%o\n",num);
		itoa(num,s,2);//转成字符串,基数为2 
		printf("二进制:%s\n",s);
		
	}

} 

输出: 

--------------------number(dec):99
----C++----
十六进制:63
八进制:143
二进制:0001100011
----C----
十六进制:0x63
八进制:143
二进制:1100011
--------------------number(dec):100
----C++----
十六进制:64
八进制:144
二进制:0001100100
----C----
十六进制:0x64
八进制:144
二进制:1100100
--------------------number(dec):101
----C++----
十六进制:65
八进制:145
二进制:0001100101
----C----
十六进制:0x65
八进制:145
二进制:1100101

--------------------------------
Process exited after 2.586 seconds with return value 0
请按任意键继续. . .

 

附录

C语言版本 printf 的 "%"定义的数据格式查询表

要将十六进制数转换为八进制数,可以先将十六进制数转换为二进制数,然后将二进制数转换为八进制数。 首先,我们将十六进制数的每一位转换为四位的二进制数。例如,十六进制数A转换为二进制数1010,十六进制数B转换为二进制数1011,以此类推。这样,我们就得到了对应的二进制数。 接下来,我们将得到的二进制数从右往左每三位进行分组,然后将每组转换为对应的八进制数。例如,二进制数1010可以分组为10和10,分别转换为对应的八进制数2和2。最后将这些八进制数连在一起,就得到了对应的八进制数。 需要注意的是,输入的十六进制数不会有前导0,输出的八进制数也不能有前导0。同时,输入的十六进制数长度不超过100000。 请根据上述步骤进行转换,得到对应的八进制数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [[C++] 十六进制八进制](https://blog.csdn.net/summer_dew/article/details/82081406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [c++ 进制转换 十六进制八进制](https://blog.csdn.net/CK__CSDN/article/details/104877692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Briwisdom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值