不用除法求商余数

xuehuzi 2008-03-29 08:36:04
今天做了道题,求285/16,叫不用除法求商和余数。
想了老半天想不出,有谁提示一下?谢谢
...全文
827 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
volcano_cm289 2008-03-29
  • 打赏
  • 举报
回复
学习了!
iceheart 2008-03-29
  • 打赏
  • 举报
回复
商初始化为0;
1、将除数不断左移,直到下一次移位就大于被除数, 用被除数减移位后的值, 商 += 1<<移位次数
2、将第一步的差作为被除数,跳转到第一步;直到差小于除数,跳出循环;
最后一次所得的差为余数

jeff_nie 2008-03-29
  • 打赏
  • 举报
回复
学习了!
野男孩 2008-03-29
  • 打赏
  • 举报
回复
要考虑数字的特性,不是所有的余数都可以这样&出来的。实际上,只有除数是2的幂才能这样计算。

考虑普遍的情况,求a/b的除数和商,我能想到的只有一个笨办法,就是除法的意义,不停的减,减到小于除数。

guocai_yao 2008-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coding_hello 的回复:]
商: int a = 285 >> 4
余数:int b = 285 & 15
[/Quote]

int a = 285 >> 4 // 商:
int b = 285 & 15 //余数: 为什么呢?要是求任意两个数的商和余数,该怎么写程序呢?
guocai_yao 2008-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coding_hello 的回复:]
商: int a = 285 >> 4
余数:int b = 285 & 15
[/Quote]

int a = 285 >> 4 // 商:
int b = 285 & 15 //余数:

barenx 2008-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coding_hello 的回复:]
商: int a = 285 >> 4
余数:int b = 285 & 15
[/Quote]
正解
guocai_yao 2008-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coding_hello 的回复:]
商: int a = 285 >> 4
余数:int b = 285 & 15
[/Quote]
学习了。
ttkk_2007 2008-03-29
  • 打赏
  • 举报
回复
错了,对16取余是和0x0f与
ttkk_2007 2008-03-29
  • 打赏
  • 举报
回复
除以4就是右移四位
对4取余就和0x0f与
用户 昵称 2008-03-29
  • 打赏
  • 举报
回复
不用,285先与0xff,就将256去掉了
285是11d,与上ff就是1d

1d大于10(10进制16),再与上0x0f就行了

所以

余数就是d,也就是13
野男孩 2008-03-29
  • 打赏
  • 举报
回复
商: int a = 285 >> 4
余数:int b = 285 & 15

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧