关于对取模和取余的理解

今天在看《C++ Primer》的时候,对书中的一句话不理解:

当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。例如, 8比特大小的unsigned char 可以表示0 至 255 区间内的值,如果我么赋值给此类型变量一个区间以外的值,则实际的结果是该值对256取模后所得的余数。因此,把 -1 赋值为8比特大小的unsigned char 所得的结果是255


经过在网上搜索查询之后,才明白其中的原理。

有时候,也经常把“取模”和“取余”两个概念搞混,于是特地解释一下:

1.求整数商:c=a/b

2.计算模或者余数:r=a-c*b

取模运算在取c的值的时候,是向无穷小的方向舍入的(和我们平时舍入的方向相反);取余运算在取c的值的时候,是向0的方向舍入的。第二步是相同的,但因为第一步所得值不同,取模和取余的结果也就不同了。

比如书中这个例子,-1/256,按照我们正常的计算应该是-(1/256)约等于0,但是在计算机中就是向无穷小的方向舍入,即c=-1,则计算模就为r=(-1) - (-1) * 256 =255


  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值