我是靠谱客的博主 强健唇彩,最近开发中收集的这篇文章主要介绍C语言进制之间转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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语言进制之间转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部