Chinaunix首页 | 论坛 | 博客
  • 博客访问: 229372
  • 博文数量: 39
  • 博客积分: 1130
  • 博客等级: 少尉
  • 技术积分: 453
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-26 15:54
文章分类

全部博文(39)

文章存档

2012年(1)

2011年(31)

2010年(7)

分类: C/C++

2011-06-18 08:02:18

        任何非负整数都可以唯一地表示为:wn*J^n+……+w2*J^2+w1*J^1+w0*J^0的多项式形式,其中w0、w1、w2、wn皆在[0,J-1]区间。只记录各项的系数并用各个系数所在的位置表示该系数所代表的实际的值就是进制记数的本质。右边第3位表示的是w2*J^2,由于C语言中整数的“/”的运算表示的是“整除”,所以(wn*J^n+……+w2*J^2+w1*J^1+w0*J^0)/J^2%J即可求得右边第2位。
  1. /*
  2. 13.如果将十进制123456789写成七进制,那么从右边数第3位是几。
  3. 如果是化成八进制呢(尽量不改动代码部分)?
  4. */
  5. #include <stdio.h>
  6. #include <stdlib.h>

  7. #define ZHENGSHU 123456789
  8. #define JINZHI 7
  9. #define QUAN_3 ( JINZHI * JINZHI )
  10. int main( void )
  11. {
  12.   printf("右边数第3位是");
  13.   printf("%X\n" ,
  14.          ZHENGSHU / QUAN_3 % JINZHI );
  15.   system("PAUSE");
  16.   return 0;
  17. }
        代码中将JINZHI定义为符号常量,所以只需把
        #define JINZHI   7
改为
        #define JINZHI   8
就可以求得同样问题八进制条件下的解。
        输出时使用%X转换格式是为了使代码对2~16进制情况皆成立。
阅读(1647) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~