模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。例如:
时钟的计量范围是0~11,模=12。表示n位的计算机计量范围是0~2^(n)-1,模=2^(n)。
向量的模的计算公式:空间向量模长是²√x²+y²+z²;平面向量模长是²√x²+y²。空间向量(x,y,z),其中x,y,z分别是三轴上的坐标,模长是:²√x²+y。
向量|a+b|等于什么,“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。
例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨8小时:10+8=12+6=6
复数的模即在复坐标系下点与中心连线的长度。通常情况下对于复数z=a+bi 其中a表示复数的实部, b表示复数的虚部, i为虚数单位;在复坐标系下,复数z表示的是(a,b)点坐标;通过这里不难发现 复数z的模 |z|=√(a。
对于8进制,8就是这个进制系统中的模,其使用的字符只有:0,1,2,3,4,5,6,7。
对于2进制,2就是这个进制系统中的模,其使用的字符只有:0,1。
n进制的数求余(mod或%)时,其余数少于n,也就只能是其使用的字符,相对于其进制系统的个位数。
1 二进制转换为十进制
直接看代码和注释:
设复数z=a+bi(a,b∈R),则复数z的模|z|= ,它的几何意义是复平面上一点(a,b)到原点的距离。运算法则:| z1·z2| = |z1|·|z2| ┃| z1|-| z2|┃≤| z1+z2|≤| z1|+| z2| | z1-z
三、其它进制与十进制的相互转换
从以上二进制转十进制、十进制转二进制的代码,可以看到代码逻辑结构一致性的地方,通过增加参数,可以进一步一般,写出十进制与其它进制相互转换的函数:
include <stdlib.h>#include <math.h>long a2b(int srcBase,long n,int desBase);int main(){ long b1; printf("输入一个需要转换的数的进制: "); scanf("%lld",&b1); long p; printf("输入一个需要转换的数:"); scanf("%lld",&p); long b2; printf("输入一个将此前的数转换为什么样的目标进制: "); scanf("%lld",&b2); printf("%d进制数 %lld 转换为%d进制数:%d\n",b1,p,b2,a2b(b1,p,b2)); system("pause"); return 0;}long a2b(int srcBase,long n,int desBase)//10进制与其它进制的转换{ long num = 0; int remainder; int i = 1; // 用作幂 int step = 1; //记录一下步骤 while (n!=0) { remainder = n%desBase; //求余数,desBase用作模 printf("Step %2d: %8d/%d,余数 = %2d,商 = %7d\n",step++,n,desBase,remainder,n/desBase); n /= desBase; //结果为整数,也就是舍弃掉了desBase的余数 //num += remainder*pow(srcBase,i);//int i = 0; //++i; num += remainder*i;//int i = 1; i *= srcBase; } return num;}/*输入一个需要转换的数的进制: 10输入一个需要转换的数:13输入一个将此前的数转换为什么样的目标进制: 2Step 1: 13/2,余数 = 1,商 = 6Step 2: 6/2,余数 = 0,商 = 3Step 3: 3/2,余数 = 1,商 = 1Step 4: 1/2,余数 = 1,商 = 010进制数 13 转换为2进制数:1101或者:输入一个需要转换的数的进制: 2输入一个需要转换的数:1101输入一个将此前的数转换为什么样的目标进制: 10Step 1: 1101/10,余数 = 1,商 = 110Step 2: 110/10,余数 = 0,商 = 11Step 3: 11/10,余数 = 1,商 = 1Step 4: 1/10,余数 = 1,商 = 02进制数 1101 转换为10进制数:13*
-End-