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 的 "%"定义的数据格式查询表

猜你喜欢

转载自blog.csdn.net/u010420283/article/details/111077638
今日推荐