为什么用c语言求余求模来把两位数分离
问题描述
- 精选答案
-
求余和求模操作,在C语言中实际上是同一个操作,即模除运算,符号为%.a%b其含义为:求a除以b所得余数。
在C语言中,可以使用整型模除和除法配合,来获取两位数的个位和十位。其原理为如下。
对于两位数x,如果其个位数为b,十位数为a,(0<=a,b<=9)写成ab的形式,其真值为10a+b。
于是求x的个位数的表达式可以写成x%10,是因为x%10=(10a+b)%10=10a%10+b%10=0+b=b这里用到了模除相关知识。
对于10a,一定是a的倍数,所以,10a对10取余一定为0。而b为0到9的数字,比10小,对10取余时值为本身。x/10=(10a+b)/10=10a/10+b/10=a+0=a这里用到的是整型除法的知识。
10a/10=a和b/10=0其中,b<10,对于整型,除法结果只取整数部分,于是b/10=0.通过以上推理,可以得到,对于10进制二进制数x,x/10为十位数,而x%10为个位数。至于提问中的赋定时初值,这个没有要求一定用模除或除法。但有时会要求分段做初始化。比较常见的有两种。
1系统为提高效率,或其他的原因,对定时器接口做了分别的封装,而使其适用于不同量级的定时。
比如分别封装为毫秒级别的和秒级别的。
这样对于一个超过一秒且带有毫秒数的定时,就需要分化为秒级和毫秒级两部分。
比如2500毫秒,就需要分化成2秒+500毫秒的形式。
基于两位数取各个位的同样原理,对于时间x,可以得到计算秒的表达式为x/1000,同时计算毫秒的表达式为x%1000。
2系统对定时器的设置为寄存器形式,分为高位和低位。以双字节16位寄存器为例,对于时间x,可以写成高位为x/256,和低位为x%256的格式。
事实上,这种写法是低效的,C语言提供的更高效的位操作同样可以实现该目的,即低位为x&0xFF,高位为((unsignedshort)x>>8)&0xFF。由于本项操作与提问关系不大,所以不对其原理进行介绍了。
猜你喜欢内容
-
简单网:构建全网教育数据枢纽,让知识检索化繁为...
简单网:构建全网教育数据枢纽,让知识检索化繁为“简”回答数有0条优质答案参考
-
去三亚有什么好玩的地方
去三亚有什么好玩的地方回答数有1条优质答案参考
-
石狮一日游必去景点推荐
石狮一日游必去景点推荐回答数有1条优质答案参考
-
电气工程师的证书考取条件是什么
电气工程师的证书考取条件是什么回答数有1条优质答案参考
-
房地产估价师的具体报考条件有啥
房地产估价师的具体报考条件有啥回答数有1条优质答案参考
-
房产经纪人的工作内容具体包含什么
房产经纪人的工作内容具体包含什么回答数有1条优质答案参考
-
学习小提琴都有哪些难点
学习小提琴都有哪些难点回答数有1条优质答案参考
-
企业行政管理证书的含金量怎么样
企业行政管理证书的含金量怎么样回答数有1条优质答案参考
-
初学者要怎么入门小提琴
初学者要怎么入门小提琴回答数有1条优质答案参考
-
报考珠宝鉴定师要啥条件
报考珠宝鉴定师要啥条件回答数有1条优质答案参考
















