社区
C语言
帖子详情
怎样用c语言的位操作实现16bit/16bit的有符号除法?
sandrafei
2008-02-15 08:30:28
我想实现16bit/16bit的有符号整数的除法,但不要使用条件判断语句。全使用位操作来完成。谢谢指教!
...全文
216
7
打赏
收藏
怎样用c语言的位操作实现16bit/16bit的有符号除法?
我想实现16bit/16bit的有符号整数的除法,但不要使用条件判断语句。全使用位操作来完成。谢谢指教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sandrafei
2008-02-16
打赏
举报
回复
诶呀,我也不想这么怪的写法啊,实验室的硬件特别。没有办法啊。
sandrafei
2008-02-16
打赏
举报
回复
没有人愿意再看看了吗
珍惜生命远离CPP
2008-02-15
打赏
举报
回复
用位移+减法可以实现.
可以参考我blog上的大数运算
http://blog.csdn.net/akirya/archive/2008/02/04/2083998.aspx
就是使用这种方法来实现的.
arong1234
2008-02-15
打赏
举报
回复
而且利用位运算进行除法,我也看不出有啥意义,即使你搞会了又怎样?
arong1234
2008-02-15
打赏
举报
回复
不要给自己无谓的限制,怎么这么多人喜欢不用if语句?有什么特别的好处?
不要做为研究的研究,研究的目的无非是学习工具并去挣钱养家
cnzdgs
2008-02-15
打赏
举报
回复
两个short型数直接相除就是了,一条语句。
sandrafei
2008-02-15
打赏
举报
回复
大家帮忙看看吗,主要是不能用通常的条件语句,最好也不要用循环语句,全部用位操作来实现。谢谢各位了。
整理后java开发全套达内学习笔记(含练习)
abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n.算法 ['ælgәriðm] Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv.直接地,立即[di'rektli, dai'rektli]) apply v.应用,适用 [ә'plai] application n.应用,应用程序 [,æpli'keiʃәn]' (application crash 程序崩溃) ar
bit
rary a.任意的 ['ɑ:
bit
rәri] argument n.参数;争论,论据 ['ɑ:gjumәnt]'(缩写 args) assert (关键字) 断言 [ә'sә:t] ' (java 1.4 之后成为关键字) associate n.关联(同伴,伙伴) [ә'sәuʃieit] attribute n.属性(品质,特征) [ә'tribju:t] boolean (关键字) 逻辑的, 布尔型 call n.v.调用; 呼叫; [kɒ:l] circumstance n.事件(环境,状况) ['sә:kәmstәns] crash n.崩溃,破碎 [kræʃ] cohesion 内聚,黏聚,结合 [kәu'hi:ʒәn] (a class is designed with a single, well-focoused purpose. 应该不止这点) command n. 命令,指令 [kә'mɑ:nd](指挥, 控制) (command-line 命令行) Comments [java] 文本注释 ['kɒments] compile [java] v.编译 [kәm'pail]' Compilation n.编辑[,kɒmpi'leiʃәn] const (保留字) constant n. 常量, 常数, 恒量 ['kɒnstәnt] continue (关键字) coupling 耦合,联结 ['kʌpliŋ] making sure that classes know about other classes only through their APIs. declare [java] 声明 [di'klєә] default (关键字) 默认值; 缺省值 [di'fɒ:lt] delimiter 定义符; 定界符 Encapsulation[java] 封装 (hiding implementation details) Exception [java] 例外; 异常 [ik'sepʃәn] entry n.登录项, 输入项, 条目['entri] enum (关键字) execute vt.执行 ['eksikju:t] exhi
bit
v.显示, 陈列 [ig'zi
bit
] exist 存在, 发生 [ig'zist] '(SQL关键字 exists) extends (关键字) 继承、扩展 [ik'stend] false (关键字) final (关键字) finally (关键字) fragments 段落; 代码块 ['frægmәnt] FrameWork [java] 结构,框架 ['freimwә:k] Generic [java] 泛型 [dʒi'nerik] goto (保留字) 跳转 heap n.堆 [hi:p] implements (关键字)
实现
['implim
无
符号
整数
除法
器:
16
位除8位
无
符号
整数
除法
器:
16
位除8位 备注:在写testbench时发现reg型变量是有
符号
的补码形式。使用{$random}%b产生无
符号
随机数,除数被除数依旧可能取值为负数;然后手动输入大于2^7=128的数作为除数,发现发生溢出,除数被当作负数,这才发现此时reg型变量应该是被当作了有
符号
数的补码形式。一般认为reg型变量为无
符号
型变量,有出入,特此记录。 源代码 //unsigned
16
bit
/8
bit
module unsignediv(divee,divor,result,odd); input [
单片机
C语言
学习之移位相减
16
位
除法
单片机
C语言
学习之移位相减
16
位
除法
:低端单片机的需求,有写厂家的编译器不行,不能处理乘
除法
运算,得像汇编一样,进行移位相减的方法处理,51单片机是不需要的,编译器会处理。学习不容易,加油加油。
stm8l151,
c语言
混编汇编,
实现
16
位乘
除法
/r2r1/r3=>mul_r[0]是低
16
位,mul_rs[1]是高
16
位。//r1*r2=>mul_rs[0]是低
16
位,mul_rs[1]是高
16
位。*8位单片机没有
16
位的乘法和32位的
除法
,在AD采样数据处理时需要用到。*在iar编译环境中如何函数传递数组变量的方式有些特殊。*
16
位的乘
除法
需要用到两个
16
位变量的带c位移位。*
C语言
操作cpu寄存器很麻烦,嵌入汇编语言更好。以下代码运行正常,稍微修改一下可以使用。
IAR开发stm8系列,
C语言
实现
16
位乘法器和32位
除法
器函数
3、低
16
位向高
16
位移位时,需要取出低
16
位数的高8位进行判断(8位单片机无法直接判断
16
位数的高8位数据结果),方法是对这个数右移8位,再赋值给一个8位的变量如y_h=y0>>8;4、32位
除法
器也是类似的细节处理,基本原理采用的也是二进制计算的基础原理,从高位往低位除,把多次
除法
的商拼接起来,上一次
除法
的余数作为下一次
除法
的被除数一部分和低
16
位剩余的数进行移位拼接再做
除法
,循环往复。现在
实现
的算法也是基于过去做51单片机时的汇编语言基础思想做的,看起来啰嗦和繁琐,如果有更好更简洁的方法,还请指教。
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章