任何非负整数都可以唯一地表示为: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位。
- /*
- 13.如果将十进制123456789写成七进制,那么从右边数第3位是几。
- 如果是化成八进制呢(尽量不改动代码部分)?
- */
- #include <stdio.h>
- #include <stdlib.h>
- #define ZHENGSHU 123456789
- #define JINZHI 7
- #define QUAN_3 ( JINZHI * JINZHI )
- int main( void )
- {
- printf("右边数第3位是");
- printf("%X\n" ,
- ZHENGSHU / QUAN_3 % JINZHI );
- system("PAUSE");
- return 0;
- }
代码中将JINZHI定义为符号常量,所以只需把
#define JINZHI 7
改为
#define JINZHI 8
就可以求得同样问题八进制条件下的解。
输出时使用%X转换格式是为了使代码对2~16进制情况皆成立。
阅读(1647) | 评论(0) | 转发(0) |