怎么用51进行大于8位的运算或表示大于8位的数?
请问,如果不懂相关的知识,需要看那些资料?万分感谢! 例如,我得到了一个4095的数,并计算4095/300,难道我只能先除以2再除以150? 用两个或以上的字节保存,运算就和常识中的多位数一样,移位,比较,加减法,进借位等 楼主用的是汇编还是C啊 cqb98 发表于 2014-9-14 09:05楼主用的是汇编还是C啊
用的C,觉得暂时水平有限,先弄C好了。 整型就可以了,用C就足够了 mcu5i51 发表于 2014-9-14 08:59
用两个或以上的字节保存,运算就和常识中的多位数一样,移位,比较,加减法,进借位等 ...
如果晶振频率相同的话,那用8位的单片机和16位的,32位的单片机运算能力是差不多的,对吗?如果差的多,又差在了哪里呢?谢谢大大! 定义成unsigned int,直接除就行了。。。 guxinghan 发表于 2014-9-14 09:18
用的C,觉得暂时水平有限,先弄C好了。
拜托先好好学学C吧,变量类型,基础的基础。
int型可到65535 大大们,休息吧,我去看书了……谢谢,你们的声音犹如警钟长鸣! unsigned long 类型,数据最大范围是4个字节,十进制的范围是0至4294967295 好好补补你的C吧,感觉你这是刚刚脚尖碰到门槛啊 路漫漫其修远兮 guxinghan 发表于 2014-9-14 09:33
如果晶振频率相同的话,那用8位的单片机和16位的,32位的单片机运算能力是差不多的,对吗?如果差的多, ...
差多了。比如说16位的加法,51一类的八位机至少需要5条指令(2个8位寄存器加进位标志拼一个16位的出来)。但是32位的只要一条。自行看数据总线宽度~而且51的执行效率及其低下,12M晶振还没STM32 2M跑的快 我的基础不是很好……
你们都懂的,大学老师不实在,教东西都只教皮毛……
自学的话也不是很系统……
我stm32开始学起的,一年了……
学的略慢……
路漫漫其修远兮……
定义成unsigned int,右移 不明觉厉啊 8位算啥,log型数据可以32位长度…… 楼主就不能多看书再来问吗.直接冲出来就是这个基础基础的问题. guxinghan 发表于 2014-9-14 09:33
如果晶振频率相同的话,那用8位的单片机和16位的,32位的单片机运算能力是差不多的,对吗?如果差的多, ...
每种芯片或框架都有自己的指令执行效率,这个很难比了;
或许你会从一些只言片语钟看到16位芯片执行效率会比8位芯片高一半等类似的话,表面看好像很合理,仔细想一下的话就会发现根本不是那么回事。
各个常用的方式方法对比一下看看:
首先是基本数据 8位的处理,8位芯片中自然是8位指令为主,加减运算一半1条指令刻意实现,乘除运算也有很多芯片支持,一到两条指令就好了,周期就不说了,即使同是51芯片相差也太大了;
16位和32位机中,一般也会有8位指令,就是没有也不会太费力气,直接当成16位或32位处理就行,一到两条指令即可;
在说16位数据,8位机中很难直接处理了,这样就需要进行多次运算,最后得到所需的结果,计算一条双字节加减法指令可能需要几条指令来处理,二乘除法可能就需要几十条来实现;在16位或32位芯片中和单字节不会有太大的区别,依然是一两条指令完成,32位结果相同,只是16位芯片的要吃力了;
8危机的有点在于使用资源较小,从而刻意用较低的硬件成本实现产品,32位的有点在于速度快,尤其是大数据时,相比8位机优势明显;缺点就相反了。
随着制造技术的进步32位等成本下降很快,但是毕竟所用的原件会多于8位芯片,在对于成本较严格的地方肯定不会占优势,而现在甚至还有使用4位芯片做的产品,短时间未来走向并不明; zhuyihua001 发表于 2014-9-15 09:02
楼主就不能多看书再来问吗.直接冲出来就是这个基础基础的问题.
大哥,其实,我就是想让大家给我指条路而已,您别激动哈,嘿嘿……
万事开头难,慢慢来吧,楼主需要实际使用一下单片机就不会问这样的问题了。 拆成8位的算,最后合成 有C编程就跟51没什么关系了吧,把数定义成int 多来论坛看看就知道了
页:
[1]