从一个三位整数中分离出它的个位,十位和百位数字
153/100=1实际含义153中包括几个100;
153%10=3对十进行求余运算的结果,是不会大于10的,因此把十位和百位上的数字都给屏蔽掉了;
中间位如何计算呢?
153-1100=53 相当于把原有的百位数字给去掉了,得到 的就是只包含十位和个位数字的这样的一个数字,这样十位数字就变成了这个数字的最高位,它变成了这个数字的最高位,还可以用刚才求最高位的方法,来求出最高位
53/10=5 得到10位数字
153%100=53 153对100求余,是不会大于100的;因此它的百位数字就会被屏蔽掉了;这样呢,同样可以保证十位数字变成最高位;
53/10=5 53对十进行整数运算来得到它的十位数字;
另外一种
153/10的整除运算,得到百位和十位数字15,相当于把小数点向前移动了一位;得到了它的整数部分;
变成了最低位
15%10=5 得到最低位,
最低位的另外一种
求出了最高位,接着又求出了中间位,那么我们就可以把
153-1100-5*10=3
求余运算的另外的应用,是将一个范围较大的自然数集,映射到一个范围较小的自然熟的集合上,例如,我们要把一个范围较大的自然数的集合,映射到只要P个元素的小集合上,那么我们就可以对自然数K对P进行求余,来得到映射后的结果。
这种算法,在哈希查找算法中呢就可以用来构造哈希函数
此外还可以用它来生成指定范围内的随即数。
C语言提供的随即函数rand()只能生成一个在0`32767之间的随机数
将0~32767 映射到 1~100。
将大范围映射到小范围。
生成1~100之内的随即数,通过求模取余的方法来实现
rand()生成的随即数对100进行求余,
132767的数映射到099范围内
但是099并不是我们希望的1100
如果要099范围内,变化到·1100
只要在这个数的基础上,在加上一个1,就可以得到1~100的数了。
生活中的求模取余的例子:
一天24小时,一个星期7天,一年是12个月
例如我们每天说的几点几点,其实就是对24进行了求模取余计算后的结果
判断能否被另外一个数整除