================================

关于单片机位数的思考(8位、16位、32位)

================================

8位、16位、32位是指单片机的“字长”,也就是一次运算中参与运算的数据长度,这个位是指二进制位。以8位为例,8位二进制的表达范围是0000,0000-1111,1111即十进制的0-255,即每次参与运算的数据最大不能超过255。而16位机的字长是16位,其数据表达范围是0-65535,即每次参与运算的数据最大不能超过65535;32位单片机的字长是32位,其数据表达范围是0-4294967295,即每次参与运算的数据最大不能超过4294967295。

8位、16位、32位与单片机的性能密切相关,通常32位机的性能要高于16位机,而16位机的性能又要高于8位机。为什么会这样呢?这要从2个方面来分析。第一,位数不同,运算效率不同。对于8位机而言,由于在一次运算中的每一个数都不能超过8位,因此即便如100+200=300这样的运算,它也不能一次完成,因为300已超过了8位所能表达的最大范围(255),因此,要对这样的一个式子进行运算,就要编写一段程序,将运算分步完成,最后合成起来得到一个正确的结果。而如果采用16位单片机来运算的话,那么一次运算就够了,显然分步完成所需要的时间要远远大于单步完成所需要的时间。同样道理,当某个运算的结果或者中间值大于65535时,16位机也不能一次运算,要分步实现它,而32位机则可以一次运算完成。第二,商业因素。通常运算能力越高,表示这个单片机性能越强,当然,价格高一些人们也可以接受,有了价格空间,生产商通常都会在这些芯片中提供更多的其他的功能,使得芯片的整体性能得到更大的提升。

典型的单片机中,80C51系列,PIC系列,AVR系列都是8位单片机;80C196、MSP430系列是16位机;而目前非常热门的ARM系列则是32位机。

另外在CSDN的讨论中的一些比较好的回答:

8位单片机,典型的是51系列的,再高级点用AVR、pic的,功能方面,似乎都不会很复杂,一般可能是控制类的多一下。一般不跑嵌入式OS。
16位的单片机,我接触的主要是MSP430,感觉16位的单片机比较尴尬,高不成低不就,要求低一点,8位MCU就够,高级点不如用32位MCU。一般不跑嵌入式OS。16位就不说了
32位的,就高级点了,一般能跑嵌入式OS,例如ucos2,ucos3,uclinux等等,能做更多复杂的功能。用OS和不用OS的话,编程的思路差异比较大。功能一般有面向控制的,也有简单消费类电子的。
8位16位32位的区别就在于地址位和数据位位宽不同。其实都一样。比如8位的51单片,网上同样有人在上面移植ucos。16位的如430就更不用说了。32位的目前大多数是arm架构的,与前面的8位、16位的指令集不同。除掉前面的boot会用一小段汇编(主要是来clear寄存器,初使化堆栈–有些书上也叫栈)其它大多用C.只要用对应架构和平台的编译器就可以了。故而作为一个c的RD,不需要考虑太多。

都玩过,单纯C写代码没啥区别,一般编译器把初始化都做了,需要改的不多。汇编或者调试的时候会有区别,指令集不一样,寄存器也会有点差异(尤其是跟汇编的时候),参数传递时会有差异(因编译器而异),8位51单片机是(R0-R7),32位ARM是R0-R15(PC),然后就是int类型,8/16位通常是16bit,32位下是32bit(最蛋疼的是64位下int还是32bit)

学嵌入式的网友,接触到的 32 位机往往是 ARM 内核的,运行 Linux。
但实际上,32 位的微处理器远不止这一类。有些就是增强版本的微处理器,例如 M*Core 内核的微处理器。
32 位机的功能模块寄存器可以是 32-bit 的(当然也可以是 8-/16-bit),而且存取都是单时钟周期。CPU 的算逻单元也是 32 位的,当然,运算会更快。
32 位机的一个重要注意事项是 32-bit 字的自然边界问题,也就是字对齐问题。例如,要从 RAM 中将一个 32-bit 的字写入一个 32-bit 寄存器,那么,这个字在 RAM 中的地址必须是 32-bit 对齐的,也就是说地址最低十六进制位是 0, 4, 8, c。如果不是这样(比如数据类型是 char,又恰好其起始地址未 4 字节对齐),需要先将此字复制到一个 32-bit 对齐的缓存,再赋值。
还有一个比较麻烦的事,就是用户定义的结构中各个成员的对齐。如果在一个 32-bit 类型的成员前面,有 char 及 short 类型成员,且没有凑齐到 32-bit 自然边界,那么编译器将会自动补 NULL 来填充。有不少从 8 位向 32 位机移植代码的朋友,都在取成员长度的时候发生疑惑。问题往往是出在 32-bit 对齐上。
在有就是不同编译器的规约差异。
不过,用过两种微处理器之后,就会渐渐熟悉起来,相互移植也不会有很大困难
数据总线的宽度为8、16、32。同时寄存器也达到相同位数。
============================**
多少位宽不是指总线宽度,也不是存储器的宽度,像51单片机的地址总线是16位的,但是它是8位机。像ARM的存储器也有八位的,但是它是32位机。而是指CPU处理的数据的宽度,也就是CPU一次数据的吞吐量。比如同一条指令:MOV R0 R2
在51单片机里面,R0和R2都是8位的,所以51的CPU一次只能处理8位数据。
在ARM里面,R0和R2是32位的,所以ARM的CPU一次能处理32位数据。这就是区别

转载链接:https://www.cnblogs.com/qsyll0916/p/7726595.html

关于单片机位数的思考(8位、16位、32位)相关推荐

  1. 8、16、32位单片机概念与寻址空间

    玩了接近三年的单片机,8位.16位.32位的都玩过,突然间一个问题就让我发现我就是一个渣!!! 8位.16位.32位都代表什么意思呢?我就根据搜集的知识,简单的对自己科普一下: 1). 从CPU的发展 ...

  2. 64位进程调用32位dll的解决方法 / 程序64位化带来的问题和思考

    最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的 ...

  3. 汇编语言——16位寄存器实现32位二进制数左移4位。

    问题描述 16位寄存器实现32位二进制数左移4位. 源代码 MOV CL, 04 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL 说明:  ...

  4. 16位调色板和32位调色板_使调色板可访问

    16位调色板和32位调色板 Accessibility has always been a tough sell. Admittedly, less so than in the 'nineties, ...

  5. .NET生成常用16、32位MD5加密的两种方法

    //MD5加密函数比较复杂,在.NET中我们不需要编写底层的算法. //平台已经提供两个生成MD5加密的方法: //经过改动一点就可以生成如现在DVBBS等论坛中使用的MD5密码 //⑴:使用C:\W ...

  6. 16位调色板和32位调色板_设计系统的调色板第一部分

    16位调色板和32位调色板 重点(Top highlight) 第1部分(Part 1) I've been creating custom design systems for over five ...

  7. MD5加密,16位加密,32位加密,Base64加密,解密

    首先,16位加密与32位加密的区别,在于16位加密就是在32位加密的字符串中取中间16位,即是第9位到24位 比如现在有密码 sys 32位加密后的字符串就是 36BCBB801F5052739AF8 ...

  8. 16位调色板和32位调色板_12种调色板提取器和站点色彩灵感资源

    16位调色板和32位调色板 Sometimes the hue muse fails to strike; sometimes all you're provided for the look and ...

  9. 键盘与显示实验程序c语言,16位微机原理,32位微机原理接口教学实验系统,64位微机原理接口实训...

    TW-X38 16.32位微机原理与接口教学实验系统 一.硬件概述 TW-X38现代32位微机原理与接口技术教学实验系统的升级换代产品,采用Intel i386EX嵌入式微处理器作为系统核心,全面支持 ...

最新文章

  1. WebService 的创建,部署和使用
  2. .net framework 25007 error
  3. 明明两次返回的组件中的props不一致,为什么dom不重新渲染(react相关)
  4. 通过微型计算机的电流,单板微型计算机控制的电流型变频调速系统
  5. Golang笔记——结构体
  6. OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
  7. Halcon 基本算子释义
  8. Ubuntu安装ssh server及分配用户
  9. 在asp.net 中实现只允许数字输入的文本框
  10. ISA发布邮件服务器
  11. pytorch导入模型
  12. [Material Design] 打造简单朴实的CheckBox
  13. 计算机专业介绍课件,计算机专业介绍课件
  14. EXCEL VBA 二维表转换成一维表
  15. 天然产物来源的新型除草剂研究取得进展
  16. speak-tts 文字转换语音的使用播放、暂停、恢复
  17. 黑马——C语言的一些基础(2)
  18. Python的人工智能模拟框架
  19. 面向对象:想和你一起看夕阳,还有好多想去的地方,希望能与你同行
  20. FDTD Solutions-边界条件

热门文章

  1. i912900k和i912900kf差距 酷睿i9 12900k和i9 12900kf哪个好
  2. Xen400培训-XenServer最佳实践
  3. Ubuntu环境下超好用的文件对比工具软件
  4. 深眸科技专注机器视觉的研发与创新,开启工业自动化、智能化进程
  5. 把公网ip通过DNSPOD进行域名解析
  6. 阿里Mock工具正式开源,轻松干掉市面上所有Mock工具
  7. Unity Netcode for GameObjects多人联机(源文件)
  8. SAP VFX3 VF01产生的凭证中应收账款科目进行标准替代
  9. 月薪3万的一道面试题---看看你的IQ
  10. mysql tee_shell中执行 mysql 使用tee 返回执行结果