社区
硬件设计
帖子详情
一个计算机系统只存在移位(左移或右移)、加减法指令,如何用C语言实现如下计算
freeskyo
2010-08-13 02:04:04
1/ 一个计算机系统只存在移位(左移或右移)、加减法指令,如何用C语言实现如下计算:
(1) n/8 (2) n/9 (3) n*13
...全文
584
15
打赏
收藏
一个计算机系统只存在移位(左移或右移)、加减法指令,如何用C语言实现如下计算
1/ 一个计算机系统只存在移位(左移或右移)、加减法指令,如何用C语言实现如下计算: (1) n/8 (2) n/9 (3) n*13
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tietao
2010-08-22
打赏
举报
回复
[Quote=引用 14 楼 of123 的回复:]
(1) n/8 ==> n>>3
(2) n/9 ==> for(i=0;n>=9;i++){n-9}; //i 就是商
(3) n*13 ==> n<<4-n-n-n
[/Quote]
高,学习了,
以前只知道,可以没想到是这样的!!
of123
2010-08-19
打赏
举报
回复
(1) n/8 ==> n>>3
(2) n/9 ==> for(i=0;n>=9;i++){n-9}; //i 就是商
(3) n*13 ==> n<<4-n-n-n
freeskyo
2010-08-17
打赏
举报
回复
继续....
有更好的方法的话,我就很快结贴了!
freeskyo
2010-08-17
打赏
举报
回复
[Quote=引用 11 楼 great_bug 的回复:]
至少需要有 移位/比较/加/减 指令,才能实现乘除运算
[/Quote]
没错,都有,我给出答案如下:(不过可能不是最优的)
(1) n/8 ==> n>>3
(2) n/9 ==> n>>3
(3) n*13 ==> n<<3+n+n+n+n+n
Great_Bug
2010-08-17
打赏
举报
回复
至少需要有 移位/比较/加/减 指令,才能实现乘除运算
bluesea87
2010-08-16
打赏
举报
回复
[Quote=引用 6 楼 freeskyo 的回复:]
引用 4 楼 bluesea87 的回复:
c语言中你尽管用除和乘好了,如何处理,编译器会帮你安排好
C语言支持,没错;我是目标系统没有乘除的基础上,想出创造性的方法。
[/Quote]
我觉得这话又问题,假设目标cpu只有一条mov指令,那么相应的工具链编译有乘法的c语言是通不过的
用户 昵称
2010-08-16
打赏
举报
回复
没有乘除就不要说C语言。
dreamjack
2010-08-15
打赏
举报
回复
任何计算机的乘除法实现都是这么来的
dreamjack
2010-08-15
打赏
举报
回复
乘法,左移 求和
除法,右移 求减
fcc250513166
2010-08-14
打赏
举报
回复
同意kacyquan
freeskyo
2010-08-14
打赏
举报
回复
[Quote=引用 4 楼 bluesea87 的回复:]
c语言中你尽管用除和乘好了,如何处理,编译器会帮你安排好
[/Quote]
C语言支持,没错;我是目标系统没有乘除的基础上,想出创造性的方法。
bluesea87
2010-08-13
打赏
举报
回复
c语言中你尽管用除和乘好了,如何处理,编译器会帮你安排好
InsaneCode
2010-08-13
打赏
举报
回复
(3)
int i;
int he;
for (i=0;i<13;i++)
{
he+=n;
}
结果为he;
InsaneCode
2010-08-13
打赏
举报
回复
(2)和1一样。
InsaneCode
2010-08-13
打赏
举报
回复
(1)
int i=0;
int n;
int yushu;
while(n> =7)
{
n-=8;
i++;
if(n<=7)
yushu=n;
}
结果i余yushu;
十六进制的加、减、乘、除、
左移
、
右移
计算
目录 一、十六进制的加法 二、十六进制的减法 三、十六进制的乘法 四、十六进制的除法 五、十六进制的
左移
计算
六、十六进制的
右移
计算
十六进制的
计算
方法和十进制差不多,十进制是满十进一,那么十六进制一样,满十六进一,不够时向前一位借一,具体可参考以下几个例子边便能清楚的了解了: 一、十六进制的加法 比如我们随便列举2个十六进制相加:0x3D+0x25=62 二、十六进制的减...
别再傻傻分不清了!
C语言
中算术
移位
、逻辑
移位
和循环
移位
的保姆级区别指南
本文深入解析
C语言
中的算术
移位
、逻辑
移位
和循环
移位
的核心区别,从二进制补码原理到实际应用场景全面讲解。通过代码示例和工程实践建议,帮助开发者避免常见
移位
陷阱,提升底层编程能力,特别适合嵌入式系统和性能优化场景。
CSAPP 3.5算术和运算逻辑——要点详解
之前我们已经知道了一些操作
指令
、操作数标识符,那么这一节的内容其实就是告诉我们,在
C语言
中,一些运算(加减乘除等)在汇编里分别对应什么
指令
、怎么操作寄存器和内存,这一节的整体框架如下:1.先讲 LEA(3.5.1)看似算地址,实际用来快速做简单算术(乘 2、乘 3、乘 4、加偏移)。2.再讲四大类操作
指令
(3.5.2)全都长这样:
指令
源, 目的。
C语言
学习|原码反码补码和位的操作符
原码反码补码和位操作符的讲解
移位
运算
《深入理解
计算
机系统
》第36页 1、x<<k表示x向
左移
动k位,丢弃最高的k位,并在右端补k个0. 2、x<<j<<k等价于(x<<j)<<k 3、x>>k,机器支持:逻辑
右移
和算数
右移
。逻辑
右移
在左端补k个0;算术
右移
在左端补k个最高有效位的值,对有符号数的运算非常有用 4、
C语言
中unsigned声明的整形...
硬件设计
6,172
社区成员
11,288
社区内容
发帖
与我相关
我的任务
硬件设计
硬件/嵌入开发 硬件设计
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 硬件设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章