概述
C语言提供了三种数值输入类型:8进制 “0” 开头、10进制直接输入数字、16进制 “0X" 开头。为了输出这三种数字格式stdio.h中的printf(标准输出格式)中定义了三种输出方式:8进制 “%o"、10进制 “%d“、16进制“%x"。所以这三种数字格式转换就很方便了看个例子:
1 #include <stdio.h>
2
3 int main(){
4 int num1 = 11; //10进制输入11
5 int num2 = 013; //8进制输入11
6 int num3 = 0xb; //16进制输入11
7
8 printf("num1=%Xn",num1); //16进制输出
9 printf("num2=0%dn",num2); //10进制输出
10 printf("num3=0x%on",num3); //8进制输出
11 if(num1 == num2) //判断不同输入方式数字是否相等
12 printf("num1 = num2n");
13 if(num1 == num2 && num2 == num3)
14 printf("11 == 013 == 0xbn");
15
16 }
可以看到以不同的方式输入同一个数结果都是相等的。输出的时候指定输出格式就是了,和输入格式完全无关。
还有最后一个问题2进制问题。C语言没有直接提供2进制方式的输入和输出所以就要自己转换,这里给出一个10进制转变进制输出的方法。原文地址:https://blog.csdn.net/danxibaoxxx/article/details/81296131。这个也表明是转载的但没有写转载地址。
14 void print_bin(int n){
15 int l = sizeof(n)*8; //总位数
16 int i;
17 if( n == 0){ //判断输入是否为0
18 printf("0");
19 return ;
20 }
21
22 for( i = l -1 ; i >= 0; i--){ //跳过前面为0的位
23 if(n&(1<<i)) break; //这里有个与运算&和位运算<< 1<<i 就是把第1这个数字在内存中左移i位
24 }
25 for(;i>=0;i--){ //上一个循环找到了第一个不为0的位,输出从这里开始
26 printf("%d",(n&(1<<i)) != 0);
27 }
28 }
最后
以上就是强健唇彩为你收集整理的C语言进制之间转换的全部内容,希望文章能够帮你解决C语言进制之间转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复