文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【原创】任意正整数转换为四进制或八进制数

【原创】任意正整数转换为四进制或八进制数

时间:2010-09-07  来源:sohu2000000

将任意正整数转换为四进制或八进制数。

刘峰六: 
(1)  请小心一个问题,对于8禁止,相当于3位一段,32位是不能被三整除的,也就会导致结果不正确
(2)  对于1111111000011这样的数字,如果数字式正数,如果前面补足N个0,那么其实数字的大小是不变的,所以这里我传入了sizeof(int)+1,也就是33
      但是如果是负数,那么只有2,4进制是正确的,因为它们不需要补位,但是对于8进制的话,如果开始是1,表示的是负数,那么就会涉及符号位的问题
      是补零还是补充一是不一定的,不同的编译器有着不同的处理,有的补1,有的补0(见《C语言教程》-- 谭浩强,昨儿刚查滴… … )(因为int是32位,所以
      永远是2和1滴倍数)
(3) 本体米有涉及16进制,涉及了也很简单,只要多个大于10就用 ‘A’ + ((unsigned )(x&(1<<(n-1))) >>(n-1))); 就OK了,因为32也是4的倍数,所以
      还是八进制最复杂~~~~~~~

   1:  
   2: /*
   3:  * A converter for Decimal to Binary Quaternary or Octal
   4:  */
   5:  
   6: #include <stdio.h> 
   7:  
   8: void printbin(int, int); 
   9: void printQuater(int,int); 
  10: void printOtc(int,int); 
  11:  
  12: int main(void) 
  13: { 
  14:         int x; 
  15:         printf("Input Number: "); 
  16:         scanf("%d", &amp;x); 
  17:  
  18:     //Binary 
  19:         printf("it's binary form: "); 
  20:         printbin(x, sizeof(int)*8); 
  21:         putchar('\n'); 
  22:  
  23:     //Quaternary
  24:     printf("it's Quaternary form: "); 
  25:     printQuater(x, (sizeof(int)*8)); 
  26:     putchar('\n'); 
  27:  
  28:     //OTC 
  29:     printf("it's Otc form: "); 
  30:     printOtc(x, (sizeof(int)*8+1)); 
  31:     putchar('\n'); 
  32:  
  33:     return 0;
  34: } 
  35:  
  36: //Binary
  37: void printbin(int x, int n) 
  38: { 
  39:         if(n>0) 
  40:         { 
  41:                 putchar('0'+((unsigned) ( x &amp; (1 << (n-1)))  >> (n-1))); 
  42:                 printbin(x,n-1); 
  43:         } 
  44: } 
  45:  
  46:  
  47: // Quaternary
  48: void printQuater(int x,int n) 
  49: { 
  50:     if(n>0) 
  51:     { 
  52:         putchar('0'+ ((unsigned)( x &amp; ( 3 << (n-2))) >> (n-2) ) ); 
  53:         printQuater(x,n-2); 
  54:     } 
  55: } 
  56:  
  57: //Octal
  58: void printOtc(int x, int n) 
  59: { 
  60:     if(n>0) 
  61:     { 
  62:         putchar('0'+ ((unsigned)( x &amp; ( 7 << (n-3))) >> (n-3) ) ); 
  63:         printOtc(x,n-3); 
  64:     } 
  65:  
  66: } 


 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/asiainfolf/archive/2010/09/07/5867499.aspx

排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载