-
2021-05-22 13:20:24
C语言对比汇编的好处
C语言对比汇编的好处
简单来说,C语言对汇编语言进行了抽象,具有如下优点:
更符合人类思维习惯,开发效率高、时间短。
模块化。
可移植性好。
提供数学函数并支持浮点运算。
程序可读性和可维护性强。
C语言当然也有缺点,比如实时性通常要比汇编差。在编写汇编的时候可以清楚的知道每一条指令究竟要多少个机器周期,但是在C中掌控准确的时间稍微困难一些。
C51包含ANSI C关键字的同时,也有针对51单片机扩展的一些关键字。C51的扩展关键字从某种程度上体现了C51语言与标准C语言的不同。例如可重入函数、存储模式等等都是标准C中不存在的问题。
ANSI C 关键字
auto: 自动变量
double: 双精度类型
int: 声明整型类型
struct: 声明结构体类型
break: 跳出当前循环
else: 条件语句否定分支(与 if 连用)
long: 声明长整型类型
switch :用于开关语句?
case: 开关语句分支??
enum: 声明枚举类型
register: 声明寄存器变量
typedef: 用以给数据类型取别名(当然还有其他作用)
char: 声明字符型类型
extern: 声明变量是在其他文件正声明(也可以看做是引用变量)??
return: 子程序返回语句(可以带参数,也看不带参数)??
union: 声明联合数据类型
const: 声明只读变量
float: 声明浮点型类型
short: 声明短整型类型
unsigned: 声明无符号类型类型
continue: 结束当前循环,开始下一轮循环?
for: 一种循环语句(可意会不可言传)
signed: 生命有符号类型类型
void: 声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
default: 开关语句中的“其他”分支?
goto: 无条件跳转语句????
sizeof: 计算数据类型长度??
volatile: 说明变量在程序执行中可被隐含地改变?
do: 循环语句的循环体
while: 循环语句的循环条件
static: 声明静态变量
if: 条件语句
C51扩展关键字
_at_为变量定义存储空间绝对地址alien 声明与PL/M51兼容的函数bdata 可位寻址的内部RAMbit 位类型code ROMcompact 使用外部分页RAM的存储模式data 直接寻址的内部RAMidata 间接寻址的内部RAMinterrupt 中断服务函数large 使用外部RAM的存储模式pdata 分页寻址的外部RAM_priority_ RTX51的任务优先级reentrant 可重入函数sbit 声明可位寻址的特殊功能位sfr 8位的特殊功能寄存器sfr16 16位的特殊功能寄存器small 内部RAM的存储模式_task_实时任务函数using选择工作寄存器组xdata外部RAMC51的运算符与C语言几乎无异(至今没有发现区别)。
算术运算符
+加,?一元取正?-减,?一元取负?*乘?/除%取模?--自减1?++自加1 逻辑运算符
&&逻辑与||逻辑或!逻辑非关系运算符
>大于>=大于等于
&按位与|按位或^按位异或-按位取反>>右移<
算术运算符与位运算符可以组成符合运算符,例如:+=、-=等等。
其它运算符
?expr1? expr2:expr3sizeof计算字节数*指针操作&求址[]下表运算符->成员访问运算符.成员访问运算符运算符在C51中与标准的C语言并没有什么差异,但是变量却有一些比较关键的区别。
变量的数据类型
基本变量类型
与标准C语言,C51的基本数据类型有char、int、short、long和float。除float外均可以使用signed和unsigned指定有符号型和无符号型,默认情况下都是signed。char占用一个字节,int和short都占2个字节,long占4个字节,float占4个字节。
其它数据类型
指针类型:指针与标准C中的指针概念相同,指向一个特定的地址(地址存放的可以是变量也可以是函数)。例如:
int func(int a, int b);
int (*pointer)(int,int) = func;
其它数据类型:enum、struct、union以及数组。
C51
更多相关内容 -
数字图像处理 | 对比度在图像中起到什么作用
2020-01-06 22:10:26你真的了解对比度吗?对比度是数字图像中非常基本的概念,一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小。直白的说就是:对比度大整体的色彩更鲜艳,对比度小色彩感更...你真的了解对比度吗?对比度是数字图像中非常基本的概念,一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小。直白的说就是:对比度大整体的色彩更鲜艳,对比度小色彩感更平淡。接下来我们用像素直方图的例子来形象的展示对比度大小在图像上的差异。
1.整体实现代码
from PIL import Image from PIL import ImageEnhance import matplotlib.pyplot as plt import numpy as np def get_piexl_list(img): w, h = img.size[0], img.size[1] img_list = img.load() r_list = [] g_list = [] b_list = [] for i_w in range(w): for j_h in range(h): r, g, b = img_list[i_w, j_h] r_list.append(r) g_list.append(g) b_list.append(b) r_list = np.asarray(r_list) g_list = np.asarray(g_list) b_list = np.asarray(b_list) return r_list,g_list,b_list def draw_mulit_pic(r_list,g_list,b_list): fig, ax = plt.subplots() ax = fig.add_subplot(311) ax2 = fig.add_subplot(312) ax3 = fig.add_subplot(313) ax.hist(r_list, bins=256, normed=True, color='yellow') ax2.hist(g_list, bins=256, normed=True, color='red') ax3.hist(b_list, bins=256, normed=True, color='blue') plt.show() def enhance_contrast(img): enh_con = ImageEnhance.Contrast(img) contrast = 1.5 img_contrasted = enh_con.enhance(contrast) img_contrasted.show() return img_contrasted if __name__ == "__main__": img = Image.open('D:\\1.jpeg') # 原始图像直方图 r_list,g_list,b_list = get_piexl_list(img) draw_mulit_pic(r_list, g_list, b_list) # 对比度增强 img_contrasted = enhance_contrast(img) # 对比度增强后图像直方图 r_list,g_list,b_list = get_piexl_list(img_contrasted) draw_mulit_pic(r_list, g_list, b_list)
2.原始图像直方图
img = Image.open('D:\\1.jpeg') # 原始图像直方图 r_list,g_list,b_list = get_piexl_list(img) draw_mulit_pic(r_list, g_list, b_list)
利用上述代码画出原始图像的像素直方图,从下图的直方图中可以观察到,直方图差异比较大,起伏比较大。
3.增强后图像直方图
# 对比度增强 img_contrasted = enhance_contrast(img) # 对比度增强后图像直方图 r_list,g_list,b_list = get_piexl_list(img_contrasted) draw_mulit_pic(r_list, g_list, b_list)
利用PIL库自带的对比度增强策略对图像进行增强,并重新将直方图画出来,从增强后的直方图可以看到,整体的像素分布会比较均匀。
4.对比度增强结果显示
我乔神和奥胖仿佛做了美黑!
-
laravel框架与其他框架的详细对比
2020-10-16 03:33:36今天小编就为大家分享一篇laravel框架与其他框架的详细对比,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
【jQuery 教程系列第 1 篇】为什么要用 jQuery ? 使用 jQuery 的好处是什么 ?
2020-01-26 15:45:33为什么要用 jQuery ? 使用 jQuery 的好处是什么 ?这是【jQuery 教程系列第 1 篇】,如果觉得有用的话,欢迎关注专栏。
本篇博客不说琐碎的理论,让我们通过原生 js 和 jQuery 这两种方式,去实现同一种效果,直观的去对比这两种方式的区别,从而说明为什么要用 jQuery,以及使用 jQuery 的好处 。
我们要实现什么样的效果 ?
要实现的效果很简单,就是当我们点击"显示"按钮时,将隐藏的 div 给显示出来,点击"添加内容"按钮时,为每个 div 添加一段内容。
动态演示效果如下所示
HTML 代码如下<body> <input id="btnShow" type="button" value="显示"> <input id="btnAdd" type="button" value="添加内容"> <div></div> <div></div> </body>
CSS 代码如下
div { height: 100px; margin-top: 10px; background-color: pink; display: none; }
一:使用原生 js 实现
JavaScript 代码如下
<script> // 获取元素对象 var btnShow = document.getElementById("btnShow"); var btnAdd = document.getElementById("btnAdd"); var divs = document.getElementsByTagName("div"); btnShow.onclick = function () { for (var i = 0; i < divs.length; i++) { divs[i].style.display = "block"; // 显示 div } }; btnAdd.onclick = function () { for (var i = 0; i < divs.length; i++) { divs[i].innerText = "今天是大年初二"; // 为 div 添加内容 } }; </script>
二:使用 jQuery 实现
jQuery 代码如下
<!-- 引用 jQuery --> <script src="../js/jquery-3.4.1.min.js"></script> <script> // jQuery 的入口函数标准 $(document).ready(function () { // 获取注册事件 $("#btnShow").click(function () { $("div").show(); // 显示 div }); // 获取注册事件 $("#btnAdd").click(function () { $("div").text("今天是大年初二"); // 为 div 添加内容 }); }); </script>
通过对比这两种方式,我们做出以下总结
JavaScript jQuery 代码比较麻烦,需要遍历 通过 API 可直接实现循环效果 获取对象麻烦,代码还长 直接填写对象名称就行 存在兼容性问题 不存在兼容性问题 关于兼容性的问题我单独说明一下,在 js 代码中我们为 div 添加内容时用到了 innerText 方法,而这个方法在低版本的火狐浏览器是不支持的,它支持的是 textContent ,而 jQuery 是不存在兼容性这个问题的。
总结
上面举的这个例子只是一个很小的对比,但我们也可以看出来使用 jQuery 带给我们的方便之处。比如我希望当点击"显示"按钮时,有一个动画效果,如果使用 js 的话,还需要引入 animate,而使用
jQuery 的话就不需要这么麻烦了,只需要在 show() 函数中填写一个参数即可,如下代码所示// 获取注册事件 $("#btnShow").click(function () { $("div").show(1000); // 显示 div });
动态演示效果如下所示
当然, jQuery 是很强大的,这只是冰山一角而已。ok,关于为什么要用 jQuery ,以及使用 jQuery 的好处,就简单说到这里。
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
结束语
最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。 -
代码对比器.rar
2019-08-14 09:26:26在线代码对比工具是一款免费的在线文本对比工具,无需注册,可以在线对两段文本进行对比,检测/比较两个文本有什么不同的差异,以便修改,常用于程序代码。使用这个在线工具的好处就是不需要人工查看,尤其是大文件... -
低代码开发是什么?低代码开发平台的优势及好处有哪些?
2020-11-18 19:20:57低代码开发平台好处及优势有哪些?”。 一、低代码开发是什么? 简单来说,低代码开发是一种用于应用程序开发的模块化方法,它能有效减少应用程序的开发时间。它能使用可重用的、基于组件的体系有关于低代码开发的内容,小编之前也发过不少文章,讲过:为什么越来越多企业选择零代码开发平台?相信也有不少企业在寻求企业管理系统的时候,了解过一些关于低代码开发的片面知识,但了解到的这些知识并不全面。所以,为了能让大家更加全面的了解低代码开发平台,小编打算后面写几篇比较全面的内容来帮助大家。今天我们就先来讲一讲“低代码开发是什么?低代码开发平台好处及优势有哪些?”。
一、低代码开发是什么?
简单来说,低代码开发是一种用于应用程序开发的模块化方法,它能有效减少应用程序的开发时间。它能使用可重用的、基于组件的体系结构进行开发,从而加快了应用程序的开发和交付周期。在构建具有可重用组件的应用程序时,开发人员将有机会在不同的应用程序中使用现有组件,而不仅仅是原始开发应用程序,这里的组件是一个可重用的对象,它将一段代码转换为模块,这些组件可用于具有类似功能的不同应用程序中。通过将这些模块添加到新的应用程序中,开发人员可以避免针对类似的通用功能进行重复编码。这种灵活性极大地减少了测试和开发的工作量和时间。
低代码应用程序开发正在吸引更多技术从业者的关注,通过低代码可以使得Web和移动应用程序构建变得更加简单快捷。
二、低代码开发平台的好处及优势有哪些?
1、无代码基础也可快速上手
由于低代码开发的特征,大大降低了编程语言的学习难度,尤其是0代码(无代码)开发平台,甚至完全不同程序语言的业务人员都可以快速进行学习和应用开发。开发人员还可以在几分钟内创建出功能完善界面美观的产品。
2、开发快效率高
由于使用大量的组件和封装的接口进行开发,以及集成云计算的IaaS和PaaS层能力,使得开发效率大幅提升;普遍的观点,低代码能够提升30%以上的开发效率,而0代码(无代码)则能够数倍提升开发效率;并大幅降低开发成本。在激烈的市场竞争中,谁可以用最快的速度将商业创意推出上线,谁就占据了竞争的主导地位,而低代码恰巧可以完成这一使命。
3、运行快安全性高
这是一个相对概念,总体来说,由于低代码开发平台或0代码开发平台使用自动的方式生成(编译成)可执行代码,代码的整体质量优于业界平均水平;并且相对来说,出错(Bug)更加可控,代码的安全性也会更高。
4、维护成本低
一般情况下,低代码开发平台或0代码开发平台,由于采用组件形式,以及面向对象的开发方式,使得代码的结构化程度更高,通常来说更容易维护。低代码开发不仅减轻了软件维护的负担。与过去相比,要处理的错误和集成问题会大量减少。而且通过减少维护时间,开发人员可以专注于可带来更大业务价值的创新工作。
5、降低进入门槛,成本和部署时间
低代码开发降低了应用程序开发进入门槛、成本和部署时间,开发人员不需要用专业的编码器来进行全面开发。同时对一些业务专家进行简单的编码培训,也可以使他们参与到程序构建中。例如,医生和护士可以帮助编码和部署自己的工作流程,而不是让没有丝毫医学背景和经验的开发者自己去理解开发并不适用实际情况的工作流程。
6、提高团队效率
低代码开发弥合了IT和业务团队之间的沟通鸿沟,因此两者都可以解决影响公司的实际问题。业务团队可以创建自己的应用程序,而无需等待开发人员,从而提高了工作效率。可以快速启动和迭代新想法。
7、弥合技术鸿沟
低代码平台可实现敏捷性开发,同时它还弥合了技术鸿沟,加速了企业的技术创新。低代码平台通过提供可视化编程技术使业务用户(最了解自身工作流程)可以直接构建和迭代可提高其效率和生产力的解决方案。
8、快速完成原型制作
企业可以通过低代码平台快速构建最低限度可行的产品(MVP),即时部署这些应用程序,学习和优化并扩展这些创新以促进持续创新。无需编写复杂的代码,企业可以轻松地将其应用程序扩展到更多渠道,直到它们被认为足够成熟。
通过以上内容,我们了解到低代码开发是什么和低代码开发平台的好处及优势有哪些?这也让我们更加明白,只要合理并且有效地运用低代码开发,不仅可以让我们工作井然有序地进行,还能最大程度保证目标的达成。
-
对比学习及其应用
2021-05-07 20:50:321. 什么是对比学习 对比学习是一种机器学习技术,通过训练模型哪些数据点相似或不同,来学习没有标签的数据集的一般特征。 Contrastive learning is a machine learning technique used to learn the general ... -
虚拟DOM的实现原理和优劣对比
2019-12-24 17:28:39虚拟DOM的实现原理和优劣对比 -
Type-C接口有什么好处?和安卓micro USB接口有什么区别
2021-05-26 12:39:31对比传统安卓micro接口有什么区别呢?接下来小编一一为大家讲解。Type-C接口有什么好处?和安卓micro USB接口有什么区别先来看Type-C接口有什么好处1、正反可插:首先,相比传统USB接口,Typ... -
什么是多态?为什么用多态?有什么好处?
2018-07-13 16:48:56什么是多态? 简单的说:就是用基类的引用指向子类的对象 提问:多态可以用在什么地方呢? 回答:可以用在方法的参数中和方法的返回类型中 其中方法的参数楼上的兄弟已经给出了代码.我这里给出在方法的 返回类型中如何... -
vue3,对比 vue2 有什么优点?
2021-09-16 14:37:34摘要:Vue3新版本的理念成型于 2018 年末,当时的 Vue 2 已经有两岁半了。比起通用软件的生命周期来这好像也没那么久,Vue3在2020年正式推出,在源码和API都有较大变化,性能得到了显著的提升,比Vue2.x快1.2~2倍。 -
对比学习论文综述
2022-02-13 13:36:29(计算损失时使用 one-hot label),直接使用网络抽取的特征 z z z 进行对比学习,但即使像 MoCo 一样取 60000 个负样本进行对比学习也仍然只是一个近似,并且采样的负样本可能类别不均衡,有的甚至是正样本,会给模型... -
(Model-Contrastive Federated Learning)模型对比联邦学习
2021-07-09 14:35:24在本文中,我们提出了 MOON:模型对比联邦学习。 MOON 是一个简单而 有效的联邦学习框架。 MOON 的关键思想是利用模型表示之间的相似性来纠正各个方的局部训练,即在模型级别进行对比学习。 我们的大量实验表明,... -
在线文本代码对比工具
2022-06-19 22:20:26在线文本代码对比工具 是一款免费的在线文本对比工具,无需注册,可以在线对两段文本进行对比,检测/比较两个文本有什么不同的差异,以便修改,常用于程序代码。使用这个在线工具的好处就是不需要人工查看,尤其是大... -
各种图像滤波器对比
2019-06-08 11:54:39对各种滤波方法进行对比,明确效果,对于实际应用有很大的好处,代码是matlab,已经测试过了,可以用。 -
光栅Talbot象对比度的实验测试系统 (1991年)
2021-04-24 00:54:41本文在理论分析的基础上,阐述了光栅Talbot象对比度的实验测试系统,该系统由激光光源,扩束准直系统,光栅,...光栅Talbot象对比度的实验研究,将对利用莫尔偏转法测量相位物沐叶取得的条纹质量的分析研究,有很大的好处。 -
struts2是什么,有什么作用,怎么使用,有什么好处?
2018-05-28 14:38:13同时struts2也是一个web层的MVC框架,那么什么是struts2中的MVC呢? 我们可以联想一下struts2的使用流程,我们需要先通过过滤器,调用URL判断使用哪个Action,再由Action决定返回结果,继而 提交请求。那么这就构成... -
自监督学习 对比学习了解
2020-10-09 02:28:19首先介绍一下到底什么是 SSL,我们知道一般机器学习分为监督学习,非监督学习和强化学习。而 self-supervised learning 是无监督学习里面的一种。自监督学习的思想非常简单,就是输入的是一堆无监督的数据 -
pulsar分析以及各消息队列对比
2021-02-21 11:33:50只有领导者负责写入,这样的好处是避免并发写,将偏序变成了全序。但是缺点是领导者容易成为瓶颈,不过我们可以通过构建多个raft小集群的方式来缓解领导者压力。 而在 bookkeeper 中,在数据之上,又抽象出了 ledger... -
MATLAB——semilogx函数和plot函数指令对比
2018-08-22 21:58:49本代码主要利用MATLAB工具实现MATLAB——semilogx函数和plot函数指令对比,简单明了,易于理解 -
IntelliJ IDEA 如何快速查看提交代码的对比
2021-09-02 00:05:19有时候,我们在提交代码的时候希望知道我们对文件进行了什么修改。...这样做的好处是能够让你在提交之前对需要提交的内容进行一些对比,以便于确定你的代码是正确和你需要修改的。 https://www.o -
超融合架构和服务器虚拟化是什么关系?主流超融合厂商服务器虚拟化产品对比分析
2019-09-20 11:12:311.蓝色部分是 SmartX 自主产品,内嵌了基于 KVM 的 SMTX 虚拟机服务器,也就是这个服务器虚拟化模块是 SmartX 超融合软件的一个模块,用户选择这种方式的好处是管理都在统一界面,更加方便。并且 SmartX 、 Nutanix ... -
YAML和JSON对比
2021-06-20 14:14:281️⃣YAML是什么干什么的? YAML 是You are my love 的缩写 YAML(YAML Ain’t Markup Language),YAML 是一种简洁的非标记语言 1、YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易... -
nacos和eureka对比
2020-12-04 09:51:29nacos和eureka都是注册中心,都具有各自的负载均衡策略,eureka分为生产者、消费者、和eureka主题,生产者把服务存放在eureka主体中,消费者就可以从eureka中获取服务,Nacos有自己的配置中心,Eureka需要配合config... -
全网最全 Flutter 与 React Native 深入对比分析
2019-06-21 09:25:47作为 GSY 开源系列的作者,在去年也整理过 《移动端跨平台开发的深度解析》 的对比文章,时隔一年之后,本篇将重新由 环境搭建、实现原理、编程开发、插件开发、编译运行、性能稳定、发展未来 等七个方面,对当前的 ... -
为什么需要消息队列?使用消息队列有什么好处?
2020-09-14 09:22:58三、使用消息队列有什么好处? 四、为什么需要分布式? 五、分布式环境下需要解决哪些问题? 六、如何实现? 七、常见消息队列对比和选型 一、消息队列的特性 业务无关,一个具有普适性质的消息队列组件不需要... -
flowable camunda activiti 功能对比
2019-01-28 22:13:18flowable camunda activiti 三个框架都是从jbpm框架诞生出来的,先是有jbpm4,然后出来了一个activiti5,activiti5...本文重点对flowable camunda两个框架的功能对比。对比的camunda版本是7.10.0,flowable框架的版本... -
JAVA和PHP的优劣对比
2021-02-12 19:42:44原标题:JAVA和PHP的优劣对比 这样从几个方面来看:一、运行机制:Java代码被编译成字节码后,会在虚拟机里由JIT进行二次编译成为本地码,据传言其执行速度可以和C++相媲美,经过我自己测试,用Java实现一个简单的... -
色彩的对比度和饱和度_使用高色彩对比度进行更方便的设计
2020-06-08 00:18:35图片:威斯康星大学麦迪逊分校追踪中心 高色彩对比度的好处 通过确保更好的可读性,您不仅会吸引视觉障碍的用户,而且还会吸引在小屏幕上(例如在智能手机或智能手表上),在光线不足的情况下以及在质量较低的... -
自监督、对比学习、contrastive learning、互信息、infoNCE等
2020-10-10 17:27:59对比学习是自监督的一种,现在很火。...理解对比学习,首先需要理解 互信息 ,因为只有知道了,我们需要加大什么互信息,才能更好的设计正负样本,从而利用对比学习来设计任务提高。 互信息 [苏神] 好特征的基