当前位置:首页 > 编码
  • 硅谷一万清华人,为何打不过印度人?

    今天我们来说一个很有意思的现象。 在美国硅谷是世界互联网的中心,我们发现有很多很多的中国人在打工,也有很多很多的印度人在打工。按道理讲咱们认为,咱中国人的素质怎么地也比印度人强多了吧? 但是我们发现,印度人在硅谷的位置远远高于中国人。 举个简单的例子,现在谷歌和微软这两大企业的CEO,全都是印度人。 除了顶级的CEO 之外,大量的印度人占据了硅谷很多很多互联网公司中高层位置。而中国人的身影呢?中国人很奇怪啊,大概做到中层,就已经做到了天花板了。别说上层了,做到中层就已经很不错了。 有人统计过啊,清华大学在硅谷地区就有一万多名校友,那么加上北大复旦南开浙大等等等等,那有将近十万中国名牌大学的精英在硅谷地区啊。 但是他们却做不过印度人,他们只能安贫乐道的做一个简单的程序员,或者做一个中低层的经理。 大量的中高层经理甚至顶级CEO的职位,都被印度人所占据了。大家不禁要问,为什么会是这样一个状态?中国人不如印度人吗?其实印度人在硅谷取得成功啊,是有表层原因和深层原因两方面 经常听到有人感叹硅谷的高科技公司都被印度人“占领”了,具体到什么程度了呢?一份研究报告显示: 在硅谷的1/3工程师是印度裔,硅谷高科技公司里7%的CEO是印度人;印度人创建的工程和科技公司比英国人、华人和日本人所创建的总和还多。 噢,对不起,这还只是一份十年前(2008年)的报告。 今天,三大硅谷IT公司:苹果、谷歌、微软,后两个的CEO都是印度裔。除了谷歌与微软,摩托罗拉、诺基亚、软银、Adobe、SanDisk、百事可乐、联合利华、万事达卡、标准普尔……这些知名国际巨头的CEO都已经被印度人拿下。 即使在整体商业领域:全美500强企业中,外籍CEO有75位,其中排名第一的是印度裔(籍)10位。英国裔(籍)9位。另有来自包括加拿大、澳大利亚、巴西、土耳其等在内的其他国家的人士。中国香港华裔(籍)和中国台湾华裔(籍)分别有1位,中国大陆华裔(籍)0人。 从1999~2012年,虽然印度雇员只占硅谷整体雇员人数的6%,但印度人在硅谷创建的公司占全硅谷的比例从7%飙升到了15.5%! 而且不同于华人硅谷高管往往本科甚至更早前就来到美国的情况(陈士俊8岁开始,李开复11岁开始接受美国教育),印度裔的硅谷高管几乎全部是本科甚至念完研究生才来的美国。 这其中最著名的要算是印度理工学院(IIT)了。据说是世界上第一难考大学: (45万人报考,只录取3%)http://cj.sina.com.cn/article/detail/1406601012/150959 但是如果我们查看清华北大的高考录取率: 好吧,你说清华北大的数据是全国高考录取率和IIT是自主招生考试,那我们来比较清华北大的自主招生: (因为第一条显示初审通过的为2446,通过率不到10%,所以估计)申请自招的人数应该在25000~28000。最后录取778人,录取率=778/25000~778/28000=3.1%~2.8% 从这个数据看,IIT和清、北相比并没有明显更难考。而且我们不要忘了,能去参加清华北大自主招生的已经是各省精英中的精英了,和IIT这种45万人可以参加的报考门槛,要已经精挑细选得多了! 另一方面,在教育拨款上: 即使用最夸张的算法,IIT是每个学生每年30万卢比,折合2.9万人民币。 https://www.quora.com/How-much-money-does-an-IIT-spend-on-a-single-student-in-terms-of-all-facilities-including-academics-in-a-year 而清华2017年的教育经费拨款30亿元、科研拨款50亿元,全校学生3.6万人。如果算总拨款的话是平均一个学生80/3.6=22.2万!即使只算教育拨款也高达30/3.6=8.3万元。可以说从任何角度都碾压印度理工。 http://www.sohu.com/a/164475124_334498 换句话说,清华的录取往最宽里面算也不比IIT容易,清华每个学生的教育资源用最严格的方法算也比IIT最宽的算法高得多。结果是,“留美预备学堂”在美国被人家全线碾压。这不得不让人深思啊。 说到印度理工,其实最早我并不是从关于硅谷的新闻上了解到的,而是一部经典的电影: 《三个傻瓜》3 IDIOTS 虽然这部电影描写的这所原型为印度理工的大学,教条、压抑、呆板,毫无创新精神,但你得想想美国人电影还天天黑自己政府最烂呢。作为电影总要树立一个冲突、一个反面,往往并不反映真实情况。或许影片中弘扬的价值观,出彩的情节,才真正反映了印度教育所推崇的理念。 用一句台词来说就是:Alliswell(哦里斯歪儿)。翻译过来就是,喜欢穷折腾。不论是开头的电击门口小便者,还是最危机关头的紧急助产里的临时网络教助产、自制发电机、自制吸尘器吸胎儿……完全体现了影片对智慧的概括:敢于穷折腾、动手能力、理论转化为实践的能力。 考虑到IIT相比中国大学要少得多的资源来说,喜欢穷折腾真是再贴切不过的了。 因为工作的关系,我一直在搜集关于青少年科技制作、实验类的资料。一次我看到一本《爱上制作》,是从美国引进的制作类的书,里面讲到一个印度的老师,教授孩子用各种廉价的材料甚至是回收的垃圾制作科学玩具,其中有一张这样的图片: 一支铅笔不依靠任何竖直方向的接触而悬浮在半空中。如此神奇,同时又如此简单和质朴。文章说,2006年一个印度小女生籍由这个小制作所撰写的科学报告参加了美国印第安纳波利斯的因特尔国际科学和工程展(ISEF),并获得了第二名。又因为这次的获奖,被英国的大学录取,甚至在2010年麻省理工林肯实验室用她的名字命名了一颗小行星。 真是一个很美好的故事,然后我记下了这老师的网站。一过就是几天。 一天我又需要寻找实验资料,所以想起了那个记下还没有查的网站,于是我打开了这个网站。真是一个简单到不能再简单的网站。简直让人怀疑是90年代的产物。 http://arvindguptatoys.com/ 这就是网站的主页。但是打开里面的“来自垃圾的玩具”链接,我有一种被震撼的感觉:废自行车内胎做的打气筒、吸管做的水泵、只剩一半的篮球做的数学模型、废光盘做的发电机、自行车气芯橡皮和火柴棍做的原子模型、饮料瓶做的肺部呼吸模型…… 应有尽有,我当时兴奋地给友人在qq上推荐“无尽的资源啊!!!”然后我就搜索了这个老师的名字,发现他竟然是印度理工学院毕业的,就更加敬佩了。我又给朋友留言:“IIT引领科学青年!” 我还搜到了他在TED上的演讲,后来发现,这是TED上最好的5段教育演讲之一。 看这家伙用沙哑的声音展示这些玩具,简直让人想哭。”我一边看一边和友人说。 6分钟后,在关于盲童玩具画笔那里。我说:“最后还是没忍住。伟大的人生啊。” 一位世界上顶尖理工院校的毕业生用科技带给人快乐和智慧,教给孩子竭尽所能地创造而不仅仅是使用现成的科技产品。然后看着这些学生一个个闪烁着忘我的眼神,作为一个工科生这或许就是人生最完美的景象了吧。 因为知道IIT完全是因为电影《三个傻瓜》。于是我当时半开玩笑半憧憬地说:“我强烈怀疑做这个的人就是三傻的原型。” 当然这不是真的,我查过了。但在我心中他就是那个兰彻:信手拈来变废为宝,用自己的双手实践自己的价值观。虽然GUPUTA不是三傻的原型,但他的事业本身就已经足够震撼人心,而且他还放弃了所有专利,从这点来说,他比电影还牛逼。他有一段话讲得特别好: “(大意是:)科学教育的器材应该是任何阶层的孩子能负担得起并且能参与制作的。如果你去看许多大型的科技馆(科学博物馆),你会发现大多数的项目都是仅供展示的。如果一个孩子在这样的博物馆花了3个小时,看那些激光装置、那些玻璃仪器、和各种发光,然后三小时以后这个(普通阶层的)孩子会感到完完全全的无助、深深的无力感。因为当他或她回家以后,什么也做不了、什么也无法延伸。这些巨型的机构,更像是权力和财富的炫耀品,而不是亲近这些孩子的教育载体。 其实,一份报纸或杂志,我们就能切割成小方块,孩子们可以做许许多多几何形状。这张纸就事实上变成了一个几何实验室。通过一些折叠,他们可以制作出扇翅膀的小鸟、会弹跳的青蛙、孔雀或者扇尾鱼。这些就是几何学的实践,而无需过多的言辞。 ——Arvind Guputa” 你说这样的教育太low了,太寒碜了,玩玩还可以,能有什么实际的技术推动、商业价值? 那好,我来介绍另一个TED大热的视频: 《对抗全球疟疾的新利器——50美分的显微镜》 简单地讲,斯坦福大学研究人员发现非洲疟疾检测的重大问题是,显微镜过于昂贵,以至于当地人根本不敢轻易使用,因为一旦损坏的结果是数月甚至数年的工资。 于是开发出的一种基于折纸技术的显微镜Foldscope,这种极其低成本、方便运输和维护的显微镜正越来越在贫困地区的疟疾防治中发挥出无与伦比的作用。 它甚至被开发出设计者没有设想到的用途,比如在卢旺达,当地植物病理学家用它来检测香蕉作物上的真菌,而坦桑尼亚的孩子们用它来检测牛粪中的寄生虫。更因为它的低廉价格,它越来越多地成为世界各国生物、科学课上每个学生可以拥有的学习设备。大大促进了科学教育的热情和普及。 他的设计者是斯坦福大学的生物工程教授Manu Prakash(马努·普拉卡什)博士: 他手里拿的那张纸就是一个折纸显微镜Foldscope的全部材料 他是哪里人呢?——哈哈,你猜对了。印度人。 他是哪个大学读的本科呢?——哈哈,你又猜对了。印度理工(坎普尔分校)。 https://en.wikipedia.org/wiki/Manu_Prakash 而当他开发出这一款显微镜之后,印度又做了什么呢? 2015年,印度生物技术部启动一项计划:将在全印度80个大学和机构推广折纸显微镜(Foldscope),用作为学生学习生物、化学和物理的教学工具。 https://en.wikipedia.org/wiki/Foldscope 从古普塔的垃圾玩具到普拉卡什的折纸显微镜,似乎真的有着千丝万缕的关联。让人看到那种深入核心的“穷折腾”精神。在我看来这就是正在印度发生的科技教育实践。我相信这样的实践正在为印度更强大的科技人才培育发挥着重要作用。 我衷心地希望我们的学生也能够接受这样的教育,去动手、去创造、去穷折腾,而不是一想到科技教育,就是做题,就是专门的实验室、昂贵的器材和按部就班的实验报告。 科学教育应该是好玩的,应该是可以亲手实践的,应该是让我们的青少年拥有创造的眼光和动手能力的。 或许我们今天的学校还无法如我所愿般的快速转变,但我们每一个物理、化学、自然、科学……老师、甚至是每一个家长都可以行动起来,去让孩子拥有这样快乐有益的科学教育。 PS:的确值得我们深思,欢迎评论。 版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

    时间:2021-07-12 关键词: 编码 微软 谷歌

  • 编码编成翔的十八般兵器

    今天愚人节,可以皮一下,可以开点玩笑,所以我决定这篇文章开启嘲讽模式。 程序员最怕读别人的代码,比这个更可怕的是什么? 从别人那里接手一个老项目 前任程序员或者是编码能力不行,或者是跳槽之前故意摆烂……于是,一个隐藏着一堆烂摊子的项目,扔给了后来接手的人。 本来以前是代码里夹翔,后来就是翔夹代码了。 这些翔有各种各样的风味,其中就有那么十八种味道最是冲人。 1. 块里堆上我满满的翔 Java 中有着无数的语句块,这些语句块可以嵌套。于是我们有很多优秀的产翔大师会在这些语句块中不断地嵌套,犹如无数层的俄罗斯套娃。 2. 把翔藏在注释里,有时候它会“惊艳”了世界 有些哥们儿很鸡贼的把一些代码藏在注释里,这些代码可以随时成为定时炸弹。 public class Base { public int field = 0; public int getField() { return field;   } } public class EmptyCatchBlockTest { public static void main(String[] args) { try { int a = 4, b = 0; int c = a/b;     } catch(ArithmeticException ae) { // ??? }   } } 对不起,兄弟,你留下这种薛定谔的处理是想让人帮你掀桌吗? 5. 只要我不考虑任何意外的情况,那么项目就一定会出意外 有些直性子的人,认为天下万物都可以直来直去,就好像直男只会让女生“多喝热水”一样。所以,他们写的代码非常直率,直接就不考虑意外情况。 public DateTime override Add(TimeSpan ts) { try { return base.Add(ts);   } catch (ArgumentOutOfRangeException nb) { // calculate how much the MaxValue is exceeded // regular program flow TimeSpan saldo = ts - (base.MaxValue - this); return DateTime.MinValue.Add(saldo)   } catch(Exception anyOther) { // 'real' exception handling. } } 我就想问问,如果以异常来控制流程,那么如何在这些异常中寻找真正的异常情况? 8. 为了我走之前不出意外,我要捕获所有的 NPE 有些哥们儿会把 NPE 捕获住,恩,不解决问题,但是把提出问题的人给解决了。

    时间:2021-04-07 关键词: 程序员 编码

  • 图解 | 你管这破玩意叫计算机?

    我和小宇早恋了,我们家住隔壁。 一、编码与电路——信号的转换 晚上父母会把手机没收,但我们还想继续聊天,又不敢发出声音,于是我们想到了这个办法... 我们把所有的中文都用灯泡的亮灭组合来表示,同时约定好每隔一秒读取一次灯泡的状态并记录下来,这是我们的暗号。 我:亮亮灭灭亮 喜:灭亮亮灭灭 欢:亮灭亮灭亮 你:亮亮亮灭灭 这样,我们虽然没有了手机,依然可以日以继日地聊天,虽然效率很低,但依然很快乐。 我和小宇就这样在不经意间,将语言转换成为了灯泡的亮灭组合,这个过程叫做编码。 二、门电路——信号的关联 我和小宇就这样一直秘密保持着通话,直到上了大学,父母再也管不了我们用手机了。 但这么多年的小灯泡通话,使我们总觉得事情没那么简单,于是我们开始了一些新的探索。 我们增加了一个开关。此时当两个开关同时闭合时,灯泡才会亮。 这样两个开关与灯泡之间,不再是之前简单的对应关系了,而是有了逻辑。 开关的断开与闭合分别对应着电路的断开与连通。而小灯泡的不亮与亮,也分别对应着电路的断开与连通。那这两者就可以统一,不再依赖于具体的实物表现了。 还有,开关的连通与断开,是主动的。而小灯泡的连通与断开,是被动的,是结果。 我们把开关这里的连通与断开称为输入端,把灯泡的连通与断开称为输出端,并且将整个电路都封装在一个图形里,可以得到如下抽象: 我们决定把这种电路叫做门电路, 上面这个叫与门。 为了今后更为抽象的探索,我们将电路连通表示为数字 1,电路断开表示为数字 0。 我们将这种表示方式称为二进制。 输入 A 输入 B 输出 0 0 0 0 1 0 1 0 0 1 1 1 慢慢地,我们发现了越来越多的玩法。 上面这种电路,我把他抽象成如下门电路形状,叫做或门。 之后便一发不可收拾,我和小宇设计了越来越多的门电路,我们发现,只要是我们能想到的逻辑关系,都可以设计成对应的门电路。 三、加法器——信号的计算 十进制数可以转换成二进制数,而二进制数又可以对应到门电路的输入端与输出端。 于是我和小宇有了一个大胆的想法,能不能设计一个计算加法的电路呢? 我们首先从最简单的一位二进制数相加开始: 0+0=0;0+1=1;1+0=1;1+1=10 变成一张表格如下 加数 A 加数 B 加和输出 进位输出 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 即我们需要设计出一种电路,可以达到表中的输入与输出效果。 经过不懈努力,终于发现这个电路可以由异或门和与门两个门电路组成。 这个装置实现了二进制的一位加法,但它并不完美,因为只考虑了这两个数的进位输出,但没有考虑上一位的进位,所以只能叫半加器。 如果将前一个进位考虑进来,只需再多一个半加器,并且拼接一个或门即可。 此时我们已经建立好了一个完美的一位加法器,并自豪地称之为全加器。 全加器做出来之后,无论多少位的加法器就都可以做出来了,只需将全加器逐个拼起来即可。我们尝试做一个八位加法器。 OK,大功告成,有了加法器,理论上就可以实现任何的数学运算了。 因为我们知道乘法可以转换成加法,除法可以转换成减法,而减法又可以转换成补码的加法。现在我们可以自豪地称这个部件为,算术逻辑单元 ALU。 四、时钟——信号的震荡 我和小宇都非常高兴,终于用电路的方式实现了计算功能。 但慢慢的觉得没什么意思了,于是我们又突发奇想,设计了如下诡异的电路。 当闭合开关 A 时,整个电路联通,开关 B 将会被吸下来,整个电路断开,电磁铁失去磁性,开关 B 又会弹上去,此时电路又联通,开关 B 又被吸下来。 就这样,开关 B 不断地快速地在开和闭之间循环进行,而我们始终没有去干预这个电路,因此该电路有了自反馈的特性。 由于开关 B 的来回震荡,我们将这种电路称为振荡器,由于它可以产生不断变化的电信号,就像时钟一样不停且规律地跑着,我们将这个装置又称为时钟。它所产生的交替的电信号称为时钟信号。 五、RAM——保存信号 虽然有了加法器,但是输入的数字从哪里来?能不能先保存在某个地方呢? 我和小宇经过多次实验,发明了一个非常复杂的电路: 如果输入端为 1,改变"某控制端"信号(信号由 0 变化到 1 这个瞬间),则输出端变为 1,之后输出端仍然保持(存储)着刚刚的 1。 如果输入端为 0,改变"某控制端"信号,则输出端变为 0,之后输出端仍然保持(存储)着刚刚的 0。 如果想不明白也没关系,只要记住这个电路的设计,实现了一位的存储功能!我们叫它 1 位锁存器。 然后我们把多个锁存器组合起来,再加上一些 3-8 译码器,8-1 选择器等电路,就可以实现一个能保存 8 位二进制的存储器,并且可以随机地读写它, 我们把它叫做 RAM,简称为内存。 这个组件通过再次组合,可以形成 N × M 的 RAM 阵列。比如我们可以表示一个 1024 * 8 的 RAM 阵列。 这表示存储容量为 1024 个单位,每个单位占 8 位。 为了更方便地表示,我们规定 1024 = 1K,8 位 = 1 字节(8 bit = 1 byte),那么我们就可以说,这个 RAM 的存储容量为 1K 个单位,每个单位占 1B。或者说,地址空间为 1K,存储容量是 1KB。 此时这个 RAM 模块已经近乎完美了,我们甚至可以单独对其进行使用,将数据存入某个地址,将某个地址中的数据读出。 怎么方便人操作呢?只需要将地址输入、数据输入、写操作端分别接入一个控制面板,由开关来控制这些信号的输入是 1 还是 0 即可,然后再将数据输出接入一些灯泡方便观察,这样一个单独的可以手动操作的存储装置,就搞定啦。(下图中有彩蛋~) 有了可读写的内存,我们就可以事先把几个数字存储内存中了,接下来,我们能否让算术逻辑单元 ALU 自动地读取这个数字,进行加法运算呢? 六、程序——自动化 我们先引入一个新的组件,10 位计数器,这里的 Clk 就接入我们在第四部分讲的时钟信号,Clr 是清零端,具体效果下面动图一目了然。 计数器的输出就是 0,1,2,3,4,5,可以当作内存中的地址。 我们把这个计数器,以及上面讲的 ALU 与 RAM 全部连在一起,尝试实现一个可以累积求和的装置。 我们想计算的是 1+2+3+4+5+6+7,   这个自动化的计算器是这么运行的 1、用控制面板在 RAM 的地址 0~6 处存上 1~7 这几个数字的,在上一节已经实现了。 2、当计数器的值是 0 时,数据 1 被输出到加法器进行计算,此时加法器 A=1,B=0,计算结果为 1,但记住锁存器存储的是上一次的加法器输出 0,这次的计算结果要等下一次锁存器遇到上升沿信号。 3、当计数器的值是 1 时, 数据 2 被输入到加法器,此时锁存器存储了上一次的计算结果 1,并将这个 1 输出给小灯泡,并同时回传到加法器的B,所以此时加法器 A=2,B=1,计算结果为 3 4、当计数器的值是 3 时,以此类推,请看下图 我们将累加求和这个过程自动化了!之后如果想计算累加和,只需要用控制面板事先在内存里存好数据就可以了!是不是很方便? 七、程序指令 我们还想要更多的自动化! 现在这个装置,只能无脑地将 RAM 中的数据从头到尾一直累加下去,无法选择加哪个不加哪个,也无法选择什么时候停止。 比如我们 RAM 中的数据是这样的。 地址(16 进制) 数据(10进制) 0x00 ... 0x01 10 0x02 ... 0x03 20 0x04 30 0x05 ... ... ... 我们只想让 RAM 蓝色地址处的数据进行累加,其他地方的数据忽略,并且到 RAM 0x05 处就停止,该怎么做呢? 我们可以再增加一个 RAM,这个 RAM 里存放的数据,表示"指令"的含义! 我们先发明三种指令。 add :把 RAM 这个位置处的值进行累加 nop :忽略此处的值(也就是什么都不做) halt :停止(禁止计数器的值加一) 那么要想达到上述功能,相应的这个指令 RAM 中的数据应该是这样的。 注意:下面指令 RAM 的地址和上面数据 RAM 的地址之间有一一对应关系! 地址 (16 进制) 指令RAM的值 指令含义 0x00 nop 什么都不做 0x01 add 累加 0x02 nop 什么都不做 0x03 add 累加 0x04 add 累加 0x05 halt 停止 ... ... ... 我们需要引入一个控制单元,放在如下位置。 遇到 nop 指令(0x00),那输出就将锁存器的 W 位禁止,不允许锁存器写操作,这样累加结果就不会录入。 再比如遇到输入为 halt 指令(0x05),就将计数器的 EN 位禁止,不允许计数器 +1,这样就达到了停止的效果。 此时再让时钟信号震荡起来,就可以达到有选择地求和过程,并且在指定位置悬停。那现在我们就让时钟信号震动起来,看看这个过程吧。(此处只留关键组件) 这个控制单元该怎么实现呢?我们知道,只要给出输入,给出输出,任何组件都可以造出来。本文就不再展开了。 有了三个指令,我们知道了通过指令这种方式,配合各种复杂的控制器,即可实现将所有操作统统自动化。 接下来我们需要做的,就是设计控制器,以及约定好一大堆指令,使得通过这一大堆指令的排列组合,可以实现任何自动化的计算操作。 我们将设计好的一大堆指令 称作指令集 我们将指令排列组合后可以实现的功能 称作程序 我们将指令的排列组合这个过程 称作编程 我们将排列组合这些指令的人 称作程序员 而我们将承载这一切的装置,叫做什么呢? 没错,这个破玩意,就是 计 算 机

    时间:2021-03-09 关键词: 计算机 二进制 编码

  • 分享一份不错的嵌入式编码规范,值得收藏细读!

    原文:https://blog.csdn.net/qq_33499229/article/details/88677757 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-01-27 关键词: 嵌入式 规范 编码

  • 一文了解Unicode UTF-8 UTF-16 UTF-32的关系

    关注、星标公众号,不错过精彩内容 素材来源:网络 编辑整理:strongerHuang Unicode,又称统一码、万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。 一、Unicode产生的背景 1.为何要有Unicode? ASCII编码使用 8bit (b0-b7)中的最高位b7位作为奇偶校验位,用来保障传输的可靠性,所以ASCII一共定义了2^7=128个字符集合。 所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添0;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1) 2.ASCII编码的问题 ASCII编码是美国制定的编码标准,它可以代表英文中的字符集合,但用来表示其他语言 如汉语、法语等是不够用的。中国为了让计算机识别汉语,制定了GB2312编码规范,使用两个字节代表一个汉字,支持65536个汉字。 这样发展的趋势是每个国家或地区制定自己语言的计算机字符编码,导致混乱不堪。 3.Unicode产生 Unicode 正是解决这个问题而诞生的,它对世界上绝大部分的文字的进行整理和统一编码。 事实上,历史上存在两个独立的尝试创立单一字符集的组织,即国际标准化组织(ISO)和多语言软件制造商组成的统一码联盟。前者开发的 ISO/IEC 10646 项目,后者开发的统一码项目。因此最初制定了不同的标准。 1991年前后,两个项目的参与者都认识到,世界不需要两个不兼容的字符集。于是,它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。从Unicode 2.0开始,Unicode采用了与ISO 10646-1相同的字库和字码;ISO也承诺,ISO 10646将不会替超出U+10FFFF的UCS-4编码赋值,以使得两者保持一致。 两个项目仍都存在,并独立地公布各自的标准。但统一码联盟和ISO/IEC JTC1/SC2都同意保持两者标准的码表兼容,并紧密地共同调整任何未来的扩展。 在发布的时候,Unicode一般都会采用有关字码最常见的字型,但ISO 10646一般都尽可能采用Century字型。 ---来自百度百科 二、Unicode的编码方式 Unicode的编码空间可以划分为17个平面(plane),每个平面包含2的16次方(65536)个码位。 17个平面的码位可表示为从U+0000到U+10FFFF,共计1114112个码位,第一个平面称为基本多语言平面(Basic Multilingual Plane, BMP),或称第零平面(Plane 0)。其他平面称为辅助平面(Supplementary Planes)。 基本多语言平面内,从U+D800到U+DFFF之间的码位区段是永久保留不映射到Unicode字符,所以有效码位为1112064个。 为何要定义平面?为何划分基平面和辅助平面?基平面为何会有保留区段? 三、计算机实现 Unicode是一种编码方式,基于Unicode编码的计算机实现是有多种的。不同的实现方式其实是对Unicode的存储方式存在着差异,计算机实现Unicode可以认为是对Unicode的存储编码。 在这里我们已经进行了两次编码转换了,Unicode本身是字符对应数字的编码方案,而Unicode的计算机实现是Unicode对应的计算机存储编码方案。 为什么对计算机实现还要对Unicode做一次编码? 下面我们通过介绍不同的Unicode计算机实现方案来讨论一下这个问题。 我们应当知道,生活中的字符出现的概率是不一样的。例如,生活中我们常常使用 “你好” “早”等词汇,但是“耄耋” “饕餮”等这些字符我们很少用到。 基于以上的事实,如果我们把 “你好” “早”等这些高概率出现的字符使用较短的存储编码,而那些很少用到的字符使用较长的存储编码, 定义:假设有n个字符c1.....cn,每个字符出现的概率为p(n),每个字符的存储空间为s1.....sn,那么, 字符平均存储空间计算公式:T = p(1)*s1+......p(n)*sn 下面我们分别计算一下不同编码实现方案的字符平均存储空间。 1.UTF-32 最容易想到的,也是最简单的计算机实现就是用四个字节(32bit)对Unicode编码字符进行存储,这就是UTF-32。UTF-32是最简单的程序实现方案(无需转换,与Unicode编码一一对应)。 好处:无需转换,速度快 坏处:浪费存储空间 T = 32bit 2.UTF-8 UTF-8是一种变长编码,对于一个Unicode的字符被编码成1至4个字节。Unicode编码与UTF-8的编码的对应关系: Unicode编码 UTF-8编码(二进制) U+0000 – U+007F 0xxxxxxx U+0080 – U+07FF 110xxxxx 10xxxxxx U+0800 – U+FFFF 1110xxxx 10xxxxxx 10xxxxxx U+10000 – U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 一个字节的uft8表示的unicode 码范围为(0 ~0x7F) 两个字节长度的uft8 表示的unicode码范围为(0x80 ~ 0x07FF) 三个字节长度的uft8 表示的unicode码范围为(0x0800 ~ 0xFFFF) 四个字节长度的uft8 表示的unicode码范围为( 0x10000 ~ 0x10FFFF) 这样编码感觉复杂度变高了很多啊,但是, 好处在于节省了存储空间,另外,兼容了旧的ASCII编码。 3.UTF-16 UTF-16也是一种变长编码,对于一个Unicode字符被编码成1至2个码元,每个码元为16位。 基本多语言平面(码位范围U+0000-U+FFFF) 在基本多语言平面内的码位UTF-16编码使用1个码元且其值与Unicode是相等的(不需要转换)。举例如下: Unicode 字符 UTF-16(码元) UTF-16 LE(字节) UTF-16 BE(字节) U+0041 A 0x0041 0x41 0x00 0x00 0x41 U+7834 破 0x7834 0x34 0x78 0x78 0x34 U+6653 晓 0x6653 0x53 0x66 0x66 0x53 辅助平面(码位范围U+10000-U+10FFFF) 在辅助平面内的码位在UTF-16中被编码为一对16bit的码元(即32bit,4字节),称作代理对(surrogate pair)。组成代理对的两个码元前一个称为前导代理(lead surrogates)范围为0xD800-0xDBFF,后一个称为后尾代理(trail surrogates)范围为0xDC00-0xDFFF。 具体的转换过程为: 首先将unicode码表 - 0x10000 , 这样得到的辅助平面的码表范围为(U+0000 - U+FFFFF) ,总共最多20bit 将20bit ,分为high 10bit 与 low 10bit。high 1bit | 0xD800 得到前导代理, low 10bit | 0xDC00 得到后尾代理 从这里也可以理解为什么 在基本多语言平面中, (U+D800  ~ U+DFFF ) 要作为保留字符了 UTF-16既保留了解析速度,同时也比较节省存储空间。这个是UTF-8和UTF-32两者优点的结合。 来源地址: https://juejin.im/post/6844903890488410120 推荐阅读: 操作系统产生死锁的原因和处理策略 美女设计师的创意设计:舌头控制器 可重入与不可重入函数的区别 关注 微信公众号『strongerHuang』,后台回复“1024”查看更多内容,回复“加群”按规则加入技术交流群。 长按前往图中包含的公众号关注 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-09 关键词: 嵌入式 编码

  • 根据软件编码的中速红外技术在FTU中的应用

    根据软件编码的中速红外技术在FTU中的应用 概 述   馈线自动化终端(FTU)是自动化系统与一次设备联结的接口,主要用于配电系统变压器、断路器、重合器、分段器、柱上负荷开关等应用场合,主要安装于户外柱上或环网柜。由于设备和电力一次设备安装距离比较近,特别是柱上安装模式给应用程序更新、设备调试、运行参数整定和维护带来困难,传统的经过串口进行调试和维护的方式需要直接接触,往往还需要设备掉电,存在安全隐患,接线很不方便,而非接触式维护调试接口将解决上述问题。和蓝牙等一些短距离无线通讯相比,红外数据通讯成本低,设计简单保密性好。红外通讯是一种短距离无线通讯技术,采用点对点传输方式,传输距离为0~30 m,发射角度为30°锥角以内,最高传输速率达16 Mb/s。中速红外数据通讯产品,具有成本低廉、连接方便、简单易用、结构紧凑、传输距离远和传输速率快等特点,非常适合作为FTU调试接口,很好地解决了FTU的参数设置和维护等困难。1 常用的红外数据传输规范1.1 IrDA协议的红外数据传输IrDA 1.0协议基于异步收发器UART,最高通信速率在115.2 Kb/s。IrDA 1.1协议提高通信速率到4 Mb/s,之后,IrDA又推出了最高通信速率在16 Mb/s的协议。使用IrDA协议的高速传输红外收发器,传输距离比较近,只有几十厘米,而且角度很窄,而FTU一般安装在柱上,距地面距离5~6 m,这种方法使现场对准光轴很困难,传输距离远不能满足要求。而且阳光中的红外波段会对红外收发器的灵敏度产生很大影响,并且带来许多干扰。1.2 红外遥控用数据传输遥控用的收发器传输距离在几米到几十米,发射角度通常在0~30°,发射强度与接收灵敏度因不同器件不同应用设计而强弱不一,在小型移动设备中有着广泛的应用。标准的红外遥控用波长为900~950 nm,副载波为33~40 kHz。但遥控用的红外收发器的数据传输速率很低,通常只传输简单的命令或读取设备状态等少量数据,对FTU来说其调试接口可能需要观察设备内部数据或更新程序,需要传输的数据量大,如果速率很低,会导致性能无法接受。2 系统设计方案FTU安装在户外柱上,距离较长,数据速率要求,高干扰,因此采用Vishay中速红外收发器,利用CPLD/FPGA实现红外调制和数据波形识别,通过软件实现应用层的编码和解码,既降低硬件设计难度又提高了电路的抗干扰能力。整个系统分为主机侧红外适配器和FTU侧收发器,主机侧适配器通过RS 232和计算机相连经USB接口为适配器供电,通过FTU维护软件经适配器向外收发数据,FTU经红外收发器接收来自主机的命令和数据,并向主机发送主机需要的数据报。FTU是基于A1tera NiosⅡ的SoPC系统,红外收发器的信号通过UART和处理器Nios相连接。2.1 FTU侧红外适配器FTU侧的收发电路包括一个接收器和两个红外发射管,将红外收发器的信号ITXD和IRXD直接接到FPGA的两个I/O脚上即可,框图如图1所示。图1中虚线框内的部件由FPGA实现,在Nios处理器的总线上挂接一个UART控制器,UART输出TXD信号经过红外调制器和连接到红外发射管的驱动电路,来自红外接收管的信号经整形后送到脉宽检测器进行解码,脉宽检测器的解码输出连接到UART的RXD,同时由复位检出组件检出复位信号连接到Nios的控制总线来控制系统重启。2.2 主机侧电路主机侧红外适配器电路如图2所示,其中红外收发器信号经过CPLD和经MAX232再接入主机的串行接口。通过串口供电可以简化外部接线,但由于本设计的传输距离远,传输速率高,所以功耗要求高,串口不能提供稳定的输出。所以适配器从主机的USB接口接入5 V工作电源,晶振Z103提供给CPLD做红外物理层编码时钟和接收信号识别用。图2中R22和C742构成上电复位,D306和J1构成主机侧RS 232接口,红外发射管由D1,D2串接组成,增强发射功率和灵敏度。Q1为红外接收管,D301为CPLDXC9536。主机侧由CPLD完成红外发射的载波生成和调制及接收信号的脉宽检测和复位命令产生。2.3  收发器组件红外发射管采用Vishay公司的TSHF5400,TSHF5400是一个高速砷化镓红外发射管,调制带宽可达10 MHz,在电流If=100 mA时tr=30 ns,tf=30 ns,光角φ=±22°,峰值波长为870 nm,工作环境温度-40~+100℃,非常适合在户外运行。红外接收采用Vishay的高速接收管TSOP7000,如图3所示,可以工作在455 kHz,和870 nm的红外发射管TSHF5400配对使用时,在If=300 mA时传输距离可达20 m。3 物理层调制和宽度鉴别文献[8]给出了几种常用的应用层传输规范,但不能满足现场安全性和强干扰下中速传输的可靠性要求,所以需要对传输的信号进行编码传输,并在无数据传输时关闭收发器。传输采用曼切斯特编码,所以在码流中除了起始符和结束符采用违规编码外不存在连0码和连1码。接收部件的宽度检测单元对编码字段的码流进行检测,三个以上的连0码和连1码均判为误码。3.1 红外调制输出红外收发器的物理层发送信号调制和接收信号检测由VHDL实现,把主时钟分频得到455 kHz的数据载波,通过发送信号TXD控制数据载波的有无实现数据发送。若当前传输信号TXD为0则输出一串数据载波,否则关闭输出。为了减少红外发射管的功耗,控制数据载波的占空比为30%。3.2 红外接收控制红外传输为半双工方式ASK调制方式,在发射管发送逻辑0时关闭接收回路,避免发射管对接收电路的影响。FTU安装的环境决定了其强干扰,而短的突发帧被干扰命中的几率相对较低。本文在接收方增加两个控制字符和一个信号.检测部件,仅在检测到9-bit0时允许接收,在接收到8-bit0时关闭接收部件,这两个字符分别对应0x0和0x80,通过应用层对数据进行编码和解码实现。3.3 红外复位信号发送和接收FTU在更新应用程序和改变特定的运行参数时需要重启系统,通过在FTU侧的红外接收接口中的复位脉冲检出组件和主机侧的红外发送接口中复位脉冲产生组件相配合,完成主机对FTU的复位控制。主机需要复位FTU时,只需要通过主机侧接口软件在RS 232接口的RTS线上产生一个逻辑l到逻辑0的跳变,CPLD检测到该跳变后产生50 ms的连续调制输出。由于正常的编码发送中没有连续50 ms的低电平,干扰信号也不会产生连续的电平,所以接收方的复位检测组件在检测到红外接收管连续输出50 ms低电平后即可产生系统复位信号,完成FTU的重新启动,整个复位逻辑不依赖应用软件,可用于紧急情况下系统重启。4 软件编码与解码4.1  帧格式本文采取了短突发帧物理层的帧结构如表1所示,包含起始符0x0和结束符0x80不编码,码字的连0特性分别用来启动红外接收器和关闭红外接收器。起始符和结束符由发送方的驱动程序添加,接收方的脉宽检测单元自动去除。编码字段用来传输用户数据,一个用户数据报文可以分成多个物理层突发帧,发送方驱动程序根据链路特征将用户数据报拆分,接收方负责重组。本文所采用的用户数据报文格式如表2所示,采用字符同步方式,包含AA55EB90H四个字节的帧头、1 B的目标地址和2 B的帧长(整个编码字段的字节长度)、NB的数据以及2 B CRC校验,这部分数据需要驱动程序进行软件差分编码和解码。编码后实际发送的数据为帧长的两倍。4.2 红外数据编码发送通过对应用层数据按曼切斯特编码规则进行编码,保证应用数据不出现连0和连1。按下面的算法生成编码查找表:    (1)循环变量置0,编码结果值置0;    (2)取数据位7,若为1,则编码成10;否则编码成01;    (3)数据左移1位,编码结果值左移2位,循环变量加1;(4)若循环变量为7,则退出;否则,转步骤(2)继续编码。在这张表中,0被编码成0x5555,0xff编码成0xaaaa等。由于待编码的数据总是介于0~255之间,所以通过下面的查找表可以实现应用层编码。发送时把待发送的字符作为数组索引,依次查找上面的数组就可以得到编码输出。4.3 红外数据解码接收参照编码算法,发送方1 b被编码成2 b,而在接收方,每2 b则被解释成一个bit,由于接收方接收到的8 b字符也位于0~255之中,对应解码后的4 b,16 b构成一个8 b字符。按下述方法生成解码数组:(1)循环变量置0,解码结果值置0;(2)取数据位D7,D6,若为10则将解码结果值加1;若为01则将解码结果置于0xfe,否则视为误码将解码结果值加80退出;(3)数据左移2位,解码结果值左移1位,循环变量加1;(4)若循环变量为3则退出,否则转步骤(2)继续编码。十六进制解码对照表如表3所示,如输入55,解码值为0,输入99解码值为a,对应其他输入解码输出为0x80即误码。   4.4  帧接收和帧同步由于一个应用帧会被分成多个物理层帧,而且采用差分编码发送,一个字符被分成两个字符,所以解码时帧同步很重要,否则无法重新恢复原始数据。本文把同步头作为一个整体,则根据编码算法,序列0xAA55EB90编码成序列0x99998666a99a9655,接收程序接收到序列0x99996666a99a9655立即同步帧接收计数器。按表2所述的应用层数据报文格式,帧同步点对应接收计数器为8。接收到帧同步序列后就可以处理数据接收,由两个半字符合成一个应用层字符。当接收计数器为偶数时,根据解码输出可以获得一个字符的低4位;接收计数器为奇数时,获得一个字符的高4位。如根据接收计数器为8和9时获得目标地址字段,接收计数器为10和11时获得帧长的低字节,接收计数器为12和13时获得帧长的高字节,依次类推接收所有应用层数据,整个帧同步和解码过程如图4所示。4.5  差错控制本文综合使用了宽度检测、编码违规检测和帧校验三种手段进行接收帧校验。帧校验采用16位的CRC校验,其生成多项式为G(x)=x16+x15+x2+1,校验出错的帧被丢弃,并由主机侧控制超时重发。通过这种机制识别错误报文,强干扰时仍然能够保证逻辑链路的可靠性。报文发送方在发送之前先计算报文CRC校验码并附加在报文的帧校验字段,然后启动编码程序编码并发送当前数据报。接收方程序在排除违规编码错误和CRC错误后才将收到的数据包提交到应用层接收处理程序,如图4所示。5 系统软件设计   整个系统的逻辑采用VHDL描述语言,CPLD设计采用Xilinx ISE进行逻辑综合和调试,FTU侧采用Altera SoPC Buitder构建Nios系统,并在QuartusⅡ环境下完成逻辑设计和仿真调试。FTU应用软件则采用C语言,在Nios IDE环境下完成编码和调试,主机侧的软件采用Visual Basic 6.0完成控制台软件编码和调试。通过这些开发工具的相互配合完成整个项目的编码和调试。6 结  语由于FTU多安装在户外柱上和环网柜,传输距离长,收发器对准困难,背景光很强,必须考虑可见光和日光的干扰。针对这种应用场合,应从以下几个方面考虑灵敏度和抗干扰的问题:(1)采用广角的红外接收管,发射管则采取多个串联,适当增加驱动电流来兼顾灵敏度和功耗,收发器对准困难;(2)采用短突发帧,减少数据帧被干扰命中的机率;(3)本地发送数据时关闭接收器,应用程序在发送时不处理接收的数据,同时考虑收发转换的时机;(4)采用本文所述的发送端编码和接收段进行宽度检测的方法,仅在收到启动字符时打开接收部件,收到结束字符时关闭接收,减少接收窗口;(5)数据段采取差分编码和帧校验相结合以及出错重发等差错控制机制,配合软件有效滤除出错报文,使得链路抗干扰性能进一步加强;(6)对户外应用,设计还要考虑背景光、电磁干扰、湿度和温度对收发器的影响。按上述介绍设计的中速红外收发器电路和软件已成功应用在我公司DMP2000配电自动化系统的FTU中和DMP5000数字化变电站的智能采集终端,现场运行三年,稳定可靠。在中午阳光直射条件下传输距离可达5 m以上,晚上可以达到20 m,数据码元速率为38 400 b/s,考虑差分编码因素实际数据传输速率为19 200 b/s,链路检错和抗干扰能力很强,极大地方便了FTU现场维护和参数整定。

    时间:2020-09-10 关键词: 软件 红外 编码

  • USB3.0与USB2.0编码方式的区别

        1 概述   互调(IM,InterModulaTIon)是指当两个或多个频率信号经过具有非线性特征的器件时产生的与原信号有和差关系的射频信号,又称互调产物、交调或交调产物。为了提升系统容量,通信系统中同时采用多个载波(频点)的现象非常普遍,而且载波功率也有逐渐加大的趋势;考虑到实际电路通常都具备非线性特点,互调及互调干扰成为常见现象,在蜂窝移动通信系统、微波通信系统、集群移动通信系统、卫星通信系统、舰船通信系统等系统、民航通信系统、有线电视系统等系统中都有发现并引起广泛注意。   互调一般分成有源互调和无源互调两种。鉴于所产生互调产物的严重程度,传统上人们主要关注有源互调,但随着更大功率发射机的应用和接收机灵敏度的不断提高,无源互调产生的系统干扰日益严重,因此越来越被运营商、系统制造商和器件制造商所关注。文献[1]对比了有源互调和无源互调的特征:   有源互调的特点:(1)有源电路的非线性相对固定,不随时间而变化;(2)分析理论相对成熟;指标明确,规范均能给出明确指标要求;(3)传输方向相对稳定;(3)可通过增加带通/带阻滤波器或改善滤波器性能加以抑制,高阶互调干扰几近忽略。   无源互调的特点:(1)随功率而变,美国安费诺公司的实验证实,输入功率每增大1dBm,PIM产生电平变化约3 dBm;(2)随时间而变。材料表面氧化、连接处接触压力、电缆弯曲程度等均会随时间发生改变,进而影响非线性程度。(3)研究理论滞后,仿真研究手段未有实质突破,离工程化尚有相当距离。(4)产生环节多,传输方向非单一,难以抑制。(5)存在高阶互调。   资助信息:本文受国家“新一代宽带无线移动通信网”重大专项“TD-LTE网络优化工具开发”(2010ZX03002-008)项目资助   2 2 互调的产生机制[1][2]   2.1谐波的产生机制   假设网络中只有一个单频信号输入,输出信号和输入信号之间的关系如下:   (1)   上式中, 为直流项, 为线性放大项, 、 等高次幂项系数非零时,输出信号就会出现非线性增大失真,即通常所说的谐波和互调干扰。单频信号经过接收机等处理后,输出信号常常会伴有N倍频率的信号,这就是所谓的N次谐波。   假设输入一个单频正弦波,   代入泰勒展开式中,展开式右边的2次幂项为:   (2)   上式出现了2倍频信号( ),即通常称作的2次谐波干扰信号;同样地,展开式右边的3次幂项可以得到3次谐波干扰信号-----。   2.2互调的产生机制   假设网络中两个单频信号输入,那么此时产生的干扰除了谐波外,还有互调。   (3)   A.2阶互调的推导   泰勒展开式展开后的2次幂项为:   (4)   上式中, 和 数学变换后得到的是上面已经介绍过的2次谐波干扰信号,而 经过三角变换后得到:   (5)   此式中的后两项即是所谓的2阶互调项,信号频率分别是: 和 。   B.3阶互调的推导   两个标准正弦信号代入泰勒展开式后的3次幂项为:   (6)   上式中, 和 数学变换后引起的是3次谐波项,而 经过三角变换后得到:   (7)   此式中的后两项即是所谓的3阶互调项,信号频率分别是:2f0-f1和2f0+f1。   同样, 也可以经过三角变换得到两个3阶互调项,信号频率分别是:2f1-f0和2f1+f0。   同样地,可以得到4阶互调项、5阶互调项、6阶互调项-----。   B.N阶互调的一般性定义   将以上双频信号互调的分析推广到多频,即可得到互调产物在频率上的一般表达式为 , 、 、---、 为任意整数值, 即互调产物的阶数。   一般地,每一对互调产物中的加号项(如f0+f1、2f0+f1)通常超出工作带宽,只有减号项(如2f0-f1、3f0-2f1)才可能落在工作带宽附近;并且对于偶数阶的互调产物,其减号项(如f0-f1、2f0-2f1)接近直流项,通常也位于工作带宽之外。因此,业界主要关注奇数阶减号项互调。  

    时间:2020-09-08 关键词: usb2.0 usb3.0 编码

  • BBC Micro:bit 编码套件在中国现已通过 e络盟 发售

    小型编码套件旨在激发年轻一代学习编码的兴趣 中国上海,2017 年 7 月 27 日——隶属于 Premier Farnell 集团的 e络盟 现已向中国客户发售 BBC Micro:bit 编码套件。BBC micro:bit 于 2016 年 3 月在英国首发,配合由英国广播公司 (BBC) 主导并与许多技术合作伙伴(包括 ARM、Microsoft 和 Premier Farnell)合作开展的一项教育计划。 Premier Farnell 是 BBC micro:bit 的独家制造商,通过它在中国的英蓓特业务制造编码套件,并在欧洲和北美洲先行推广该套件。 自从 BBC Micro:bit 在英国发售以来,microbit.org 网站的访问量已达 1,300 万,编码模拟器运行次数将近 1,000 万,编译次数达 200 万。micro:bit 在教学领域的应用也使人们对 STEM* 的态度发生了积极转变。 · 39% 的女生决定选择 ICT/计算机专业,之前仅为 23% · 86% 的使用者表示该套件让计算机科学变得更有趣 · 88% 的学员认为该套件让编码看起来并不像原来想象的那么难 BBC micro:bit 的尺寸仅为 4 厘米 x 5 厘米,是通往技术领域的易用实践入门工具,功能多样,能够激发无限的创造力。该器件由 www.microbit.org 网站提供支持,网站包含大量资源和教程,可帮助用户充分利用 micro:bit 的巨大潜能。 micro:bit 包含: · 25 个红色 LED – 开启指示灯、更新信息、开发游戏、创作数字故事 · 2个可编程按钮 – 将它们与某个操作关联并与您的项目交互 · 板载运动探测器 – 就像一个智能手机;micro:bit 可以对摇动、倾斜甚至下落做出反应 · 内置罗盘 – 感应您面对的方向以及您移动的角度 · 蓝牙智能技术和低功耗 – 连接互联网、世界就在您身边!无论是其他 micro:bit、手机、相机还是平板电脑,都可以“随时随地编码”或是自拍 · 5个输入和输出环 – 将 micro:bit 通过鳄鱼夹或 4 毫米香蕉插头直接连接到其他设备,并往返发送指令 Premier Farnell 销售与营销高级副总裁 Ralf Buehler 介绍:“BBC micro:bit 项目是英国 STEM 教育和计算机编程方面具有里程碑意义的事件,我们很高兴它可以在中国 e络盟 出售。我们致力于帮助发展科技的未来,无论是支持客户开发可以令世界更美好的产品,还是帮助教师激发学生对于编码的兴趣。BBC micro:bit 是向学生讲解编码课程的绝佳方式,让技术实践应用激发年轻一代的兴趣。” BBC micro:bit 有多种不同的包装规格,包括单个 BBC micro:bit“micro:bit go”套装(包含一根 USB 数据线、电池座和两节 7 号电池,还有一本快速入门指南及四项入门启发创意提示);另有“社团”套件(10 件套装)和 300 件大容量套盒。

    时间:2020-08-07 关键词: e络盟 microbit 编码

  • 音频压缩技术编码分类

      音频压缩技术定义

    时间:2020-08-06 关键词: 音频压缩 编码

  • H.266视频编码来了:可远没想象的那么好

    下一代视频技术实现重大突破,视频编码标准H.266出炉。 近日,Fraunhofer宣布最新的视频编解码标准 H.266/VVC制定完成。同等画质下将节省近50%传输流量,清晰度越高,码率节省越多。这项耗时3年的标准,主要面向未来的4K和8K。 H.266由MPEG和ITU联合开发,全球范围内包括高通、HHI、华为、三星、索尼、英特尔、诺基亚、爱立信、华为、腾讯、阿里等企业均有参与其中。 其中不少企业正在设计新芯片,以启用/加速H.266。并且提供支持H.266编码器和解码器的软件也将在今年秋季发布。 1 什么是视频编解码技术? 视频是由一张张图片连接起来形成的动态图像序列,若直接将每张图片的每一个像素点数据都加以存储,视频码流所占用的带宽将不可估量。 视频编解码的作用,是在摄像头采集画面前后,将图像进行压缩和数字编码,获取更加优化、抗干扰能力强的码流,以用于传输。本质上,就是用尽可能小的带宽传送高质量的视音频数据。 从MPEG-1到MPEG-2,从H.263、H.264到H.265(HEVC),以及现在的H.266等一系列标准,都是为了让码流更优化、压缩效率更高、稳定性更强。 2013年推出的H.265是在H.264编解码结构基础上,提高了压缩率、编码质量,并且仍然采用混合编解码。 超高清视频时代,帧率逐渐从30fps向60fps、120fps甚至240fps进发。高度密集的数据给带宽和存储带来巨大挑战,当前主流的H.264的编解码技术已经不能满足未来4K、8K的需求,H.266应运而生。 H.266/VVC的压缩视频方式与H.265/HEVC相似,但是在分区、预测和熵编码等方面都有所改进。 与H.265相比,H.266进一步优化了压缩性能,在保证视频清晰度不变的情况下,H.266存储体积减小一半、宽带流量节省一半,画质更细腻。 比如,下载一部基于H.265编解码的电影需要2GB,画质、清晰度、播放速度不变的情况下,基于H.266编解码技术耗费的流量只要1GB。 简单来说,可以极大地提升用户体验,降低企业成本。 2 如果H.266得到普及,所有与超高清视频相关的行业将迎来巨大变革,说视频编解码技术H.265/H.266是4K/8K超高清视频发展的基石也不为过。 但,技术迭代的狂欢背后,隐藏着巨大的隐患:专利费收取混乱。这也是H.265至今7年未能普及的原因。 一个视频编解码技术标准的形成来自近千个专利的支撑,而这些专利权分散在大量不同的企业手中。 H.265标准推出时,原来H.264的老牌专利池MPEG LA提高了H.265的收费标准,一些企业另起炉灶,成立新的专利收费组织,还有不少的专利持有者没有加入组织,提出单独收取专利费诉求。 “目前至少有四家组织或公司在收取H.265的许可费用:老牌的专利池MPEG LA,新兴的专利池HEVC Advance和Velos Media,以及Technicolor公司。”某业内人士感慨到: “H.265从2013年定稿的第一天起,各组织和公司就开始收取专利费,每台终端设备的专利费最高可达1.2美元。” 收费标准太高,且收费主体不清晰,不仅极大地侵占产品利润、带来高昂的成本,还给企业带来严重的知识产权风险。 如今H.265还没被捧热乎,H.266就来了。但H.265存在的问题,H.266一个也逃不掉。 “VVC不是免费的开源编解码器。”Fraunhofer 表示,H.266 / VVC已获得专利,只有合作伙伴可通过基于FRAND原则(即公平,合理和非歧视)的统一且透明的许可模式使用它。 业界有专家曾表示,传统国际标准组织需要具备打破困境的意识,主导建立一个相对干净权属的技术平台,建立不过多依赖H.265的新标准,才能走出目前的困境。 但现在看来,以H.265为基础演进的H.266,仍会延续H.265的专利许可乱局和危机,H.266产业应用将无法快速享受到技术发展带来的福利,消费者也将因此承受更多的代价。 专利权的本意是保护创新,促进技术的革新与产业发展,现在却因为各种因素成为阻碍行业发展的最大障碍。 行业的发展需要各界、各级共同的努力,期望视频编解码技术与应用的困局能被打破,迎来视频产业应有的辉煌。

    时间:2020-08-06 关键词: 视频 编码

  • 在争夺5G编码标准的时候,中兴背后捅了华为一刀?

    在中兴事件后,网上盛传在争夺5G编码标准的时候,中兴背后捅了华为一刀,把票投给高通。然而这完全就是子虚乌有的谣言。 先说一下三大场景。 增强型移动宽带(eMBB,Enhance Mobile Broadband),按照计划能够在人口密集区为用户提供1Gbps用户体验速率和10Gbps峰值速率,在流量热点区域,可实现每平方公里数十Tbps的流量密度。 海量物联网通信(mMTC,Massive Machine Type CommunicaTIon),不仅能够将医疗仪器、家用电器和手持通讯终端等全部连接在一起,还能面向智慧城市、环境监测、智能农业、森林防火等以传感和数据采集为目标的应用场景,并提供具备超千亿网络连接的支持能力。 低时延、高可靠通信(uRLLC,Ultra Reliable & Low Latency CommunicaTIon),主要面向智能无人驾驶、工业自动化等需要低时延高可靠连接的业务,能够为用户提供毫秒级的端到端时延和接近100%的业务可靠性保证。 再说明一下,什么是长码,短码。 优化的编码致力于用最短的二进制位数表示一个指令,越短效率越高。在指令数量不变的情况下,越常用的指令当然越短越好,但是指令不等长将造成接收端沉重的处理负担。然后用等长的编码显然会导致无效数据的大量传输,浪费带宽。于是把指令编成两个组(个别也有三个组的),常用的用相对短的二进制位数表示,不常用的用相对长的二进制位数表示。短码代表常用的指令,长码代表不常用的指令。 控制信道是用于传送信令或同步数据的信息通道,主要用于传输指令操作下级网络设备。信息通过网络传输的过程中由于受到外界干扰可能产生错误,为了纠正这些错误,以及不让错误信息进一步积累,对要在信道中传送的数字信号进行的纠、检错编码就是信道编码。随着传输速度的提高和同时工作的传输协议的种类越来越多,数据信道的数量也随之大幅增加,信道编码的传输渐渐独立出来,由专用的信道负责,也就是编码信道,这可以增强数据在信道中传输时抵御各种干扰的能力,提高系统的可靠性。 中兴鼎立支持Polar 联想投了LDPC 在投票时,Polar、LDPC是成为最后的竞争对手。 在投票时,有一轮是中国大陆和台湾厂商统一投票给Polar ,其中,中兴和努比亚两票都投了Polar 。另一轮是除了联想和摩托罗拉两票投给了LDPC,中国厂商集体弃权。 网上盛传的中兴捅华为一刀完全是谣传。 关于中国厂商那一轮集体弃权,铁流猜测可能事Polar 出来时间太短,技术不够成熟,解决方案相对于LDPC有明显差距,而国内厂商出于同进退的考量,不好投LDPC,只好选择集体弃权。而联想和MOTO投LDPC么。..。..可能就是完全出于商业利益的考量,或者是为了充分展现自己是一家国际化公司。..。.. 在当年投票结果出来后,有媒体大肆鼓吹“华为碾压高通,拿下5G时代”,但实际上,Polar只是被确定为短码控制信道的eMBB场景标准。而eMBB场景长码的控制信道和编码信道,以及短码编码信道都选择了LDPC。 必须指出的是,Polar虽然获得了中国企业的力挺,但其实并不完全属于中国,更不属于华为。polar码是土耳其一位学者提出的,很多专利并不在中国公司手中。之所以力推polar码,主要是因为这项技术比较新,欧美公司技术积累相对较少。另一方面LDPC这项技术时间出来长一些,也相对成熟一些,欧美公司技术积累也比较多。 另外,由于LDPC这项技术时间出来长一些很多专利已经过期,或快过期了。欧洲、日本、美国的众多厂商选择LDPC,实现各自的利益做大化,实属正常。 总结一下,投LDPC的是联想/moto,中兴和努比亚都投了Polar。 这次投票没有必要用非常富有“民族情绪”的眼光去审视,毕竟Polar并非中国原创,很多专利也不在中国企业手中,更多的是手上没有原创好牌的情况下,从产业实力非常弱的玩家手里借一张牌,当作用来防御欧美科技公司的武器。由于LDPC很多专利过期或快过期了,最后投票的结果更符合全球通信厂商的利益。

    时间:2020-07-17 关键词: 中兴 物联网 5G 编码

  • 话说学习linux改变人生

    无论您学习什么,兴趣和持久性都是两个最重要的方面,因为兴趣可以使您更容易入门,持久性可以帮助您成功,学习Linux也不例外! 大学毕业的两年时间里,我干过销售,做过文员,当过前台,适合女生的工作换了一次又一次,并不是吃不了苦,只是我每次的工作都是迫于生计,都不是我所喜欢的。而Linux技术行业不一样,可以这样说,虽然它并不是最轻松的,但确是最理想的,最喜欢的。 我喜欢计算机!看着电视剧与电影中,黑客主角们,手在键盘上打出的悦耳节奏,与扫一眼就能看懂没有任何中文的代码,别提心中有多么崇拜与羡慕了。但空有一肚子的喜欢,根本无用,而一年前的我,也不会想象得到自己会从事这份工作,一直以为这个埋藏在心底的计算机梦想,终究只会是想想而已,并没有得到很大的重视。 好在毕业后人生迷茫聊以度日的日子里,有个朋友指点我转行,也是他的无私教导让我真正开始鼓起勇气,打破原定的安稳却不喜欢的生活,开始追逐那个埋藏在心底,不敢与人说的梦想。 记得他曾经告诉过我,市面上有许多可以学习linux的书,但是大多数都只有生硬的知识概念,枯燥乏味不说,还不易懂,根本不适合什么都不懂的菜鸟!但是他推荐我《linux就该这样学》,容易上手,它从准备工具,到如何安装linux软件直到如何部署动态网络环境,都十分详细的记录在了书本上,其中还有大多数的图片,可以帮助菜鸟更好的理解linux,不会因为乏味枯燥看不懂而放弃学习linux。 可以这样说,这本书他就是为了新手们量身定做的,它可以让你了解linux,垫上入门的砖,即使是毫无基础的新人,毕竟古话说得好,兴趣才是最好的老师。 我会学习并且从事运维技术行业,自然与我对计算机的崇拜和喜欢,有这密不可分的缘故,自小起,我就喜欢看与黑客有关的电视剧与电影,比如说前不久红极一时的《微微一笑很倾城》,里面肖奈与ko的编码较量就看得我热血沸腾,还有小时候美国的电影《黑客帝国》《骇客追缉令》之类的,都是我的最爱。 而凡事都贵在坚持,难在坚持。刚学习linux的前三个月,放弃的念头可以说是经常在我的脑海中徘徊,虽说学习linux与英语的好坏并没有特别大的关系,但是它的编码还是由26个字母组成,对于我这种看见字母就发怵的人,还是会有些畏惧,特别是每次看见复杂难懂的命令和脚本,总会让我感到抓狂。 好在我的身边有朋友。一本好书,详尽的讲解可以帮助我很好的理解那些生硬难懂的命令与脚本,再加上朋友的督促指导,半途而废的念头从时有时无到彻底消失。 当然实验才是检验真理的唯一标准,所以书中的理论知识再生动形象,也没有亲自实验获得的知识多,所以这本书,就是从一开始便教你如何在实验之中理解有关于linux的专业知识。 如今想想,好在我坚持下来了,如果当初真的放弃了,现在一时富足的美好生活怎么样不说,我的梦想肯定会再次石沉大海,而生活也会恢复到之前那种没有梦想,日日为了没有目标混日子而发愁的生活。 有了兴趣与坚持,我想这个世界上,不会有你学不会的事。而同时,学习linux,也可以成为人生的一个新的机遇,即使之前对于计算机行业无感的人,也可以去试着接触一下linux。 而且自我从事这个行业之后,也认识了好多半路出家,靠着极大的魄力转行学习linux,从而改变了自己的一生。 不论是本就喜欢计算机行业还是想要改变人生,选择linux运维技术行业,都是不错的选择,但最重要的是,入门之后,不要轻言放弃,毕竟半途而废放在任何事物上,都会落上一事无成的结果。 如果你喜欢这个行业,那就请你相信你自己,不要害怕,不要轻言放弃,不要觉得自己不是对口专业毕业,而不敢从事这个行业,毕竟现在毕业的大学生研究生,有多少出了校园后,干这之前未涉及过得行业?不用说别人,我自己原本就只是学艺术的,与计算机完全没有任何关系,现在也依旧干的很好! 更不要害怕linux运维技术行业的前景不好,恰恰相反,linux运维技术行业,可以说是近几年来,飞快兴起的行业,而面对现在科技高速发展的互联网时代,linux完全顺潮流发展,当然是不会落伍!只会是最富有潜力的行业。 请不要害怕身边没有朋友涉足或者自己未曾涉足过这个行业,而不敢尝试,我记得我在一本励志散文书中,看到过一句话,概意是‘想要成功只有俩种选择,一是,将别人都会做的事情做到极致,方能成功,二是,去做别人不敢做的事情!’ 敢踏入linux行业,你就会比哪些不敢尝试新事物的人,成功了一步,书是最好的朋友,兴趣是最好的老师,只要你想要,会有水滴石穿,铁杵磨成针的那天。

    时间:2020-07-11 关键词: Linux 运维 编码

  • 蓝牙耳机编码音质测试

    以iPhone 7为主要开端,越来越多的手机开始抛弃3.5mm耳机孔,虽然USB-C耳机、转接头的出现让有线耳机仍能派上用场,但业界的共识是无线音频将在未来扮演更重要的角色。 无线蓝牙音频想要取得大发展,也需要解决不少问题,比如耳机的价位、续航、音质等。以音质为例,典型的一首MP3格式音乐入耳大约需要经过两次解码和一次编码,MP3本就有损,如果再经一次有损编码,对音质损伤不言而喻。 传统蓝牙传输编码主要有SBC、AAC,近年来,高通的aptx/aptxHD和索尼主导的LDAC开始崭露头角,它们的解析度依次升高,其中aptx就已经可以实现16-bit/44.1kHz/384kbps的CD级音质。 不过,经SoundGuys测试,任何一种单独的蓝牙编解码方案都可感知的音质问题,尽管并不是很明显。其次,目前任何一款在售的蓝牙耳机都不能达到有线的信号质量。 先看AAC编码,这是苹果坚持的方案。华为P20 Pro处理的能力最差,完全无法驾驭24bit,底噪对听感的影响最明显。 即便是当前最强的LDAC,在不同手机上也设定了不同的码率,比如三星Note8、LG V30是660kbps,而谷歌Pixel 3就只有最低的330kbps。 从对连接质量的统计来看,-45dBm为最佳值,然而仅LDC 990kbps和660kbps属于保持得比较好。 测试显示,每一个蓝牙编解码器都表现出比有线音频更高的噪声水平,尽管只有AAC、SBC和LDAC 330 kbps具有人耳可听的噪声。另外,在有线音频可以处理CD音频和24位音乐的地方,蓝牙耳机根本不能处理。

    时间:2020-06-25 关键词: 蓝牙耳机 编码

  • 音频几个很重要的参数

      音频几个很重要的参数!   采样率:每秒采集数据的次数   采样精度:每次采集数据的位数   通道数:存在几路音频   比特率:针对编码格式,表示压缩编码后每秒的音频数据量大小。   音频的帧的概念没有视频帧那么清晰,几乎所有视频编码格式都可以简单的认为一帧就是编码后的一副图像。   但音频帧跟编码格式相关,它是各个编码标准自己实现的。因为如果以PCM(未经编码的音频数据)来说,它根本就不需要帧的概念,根据采样率和采样精度就可以播放了。比如采样率为44.1HZ,采样精度为16位的音频,你可以算出bitrate(比特率)是44100*16kbps,每秒的音频数据是固定的44100*16/8 字节。   amr帧比较简单,它规定每20ms的音频是一帧,每一帧音频都是独立的,有可能采用不同的编码算法,以及不同的编码参数。   mp3帧较为复杂一点,包含了更多的信息,比如采样率,比特率,等各种参数。      AT测试前设定音频参数   这里主要是说明一个从C语言调用AudioSystem::SetParameter封装的过程。   新增一个audio_hw_interface.cpp文件   #include 《media/AudioSystem.h》   namespace android {   extern “C” void send_audio_calibration(int acdb_id, int capability, int app_id, int sample_rate)   {   char param[50];   String8 paramValue;   snprintf(param, sizeof(param), “send_audio_calibraTIon=%d-%d-%d-%d”,acdb_id, capability, app_id, sample_rate);   paramValue.setTo(param);   AudioSystem::setParameters(paramValue);   return;   }   }; // namespace android   在Android.mk中添加需要头文件搜索目录和动态库   LOCAL_C_INCLUDES := $(LOCAL_PATH)/include   $(TOP)/frameworks/av/include/media   LOCAL_SHARED_LIBRARIES := libcuTIls liblog libc libmedia libuTIls   在调用该封装函数的C语言中。   extern void send_audio_calibraTIon(int acdb_id, int capability, int app_id, int sample_rate);   send_audio_calibration(acdb_id, 2,14, 48000);   这样就可以了。

    时间:2020-06-03 关键词: 音频 at 编码

  • 千视电子视频编码器支持NDI协议

    NDI是Network Device Interface的简称,是由美国NewTek公司于2015年推出的网络设备接口协议;NDI是使视频兼容产品通过局域网进行视频共享的开放式协议,它让视频在IP空间进行简捷高效的传输成为现实,这一特性和应用将在很大程度上取代目前行业特定的有线连接和传输(比如HDMI,SDI等)。 音视频信号在进行NDI编码后,能实时通过IP网络对多重广播级质量信号进行传输和接收,同时具有低延迟、精确帧视频、数据流相互识别和通信等特性。 NDI有哪些优势?多信道:任何设备都能够连接上其他所有设备,实时传输多路信号;少流量:可在本地完成信号切播后只输出一路,不受网络条件影响;高码率:局域网可轻松传输720P、1080P等超高清画质的视频流;低延迟:无需上传至云端再下载到本地,延迟可控制在0.1秒左右。 大范围:即便是不同办公区域,只要在同一局域网中即可正常通信;小成本:无需投资全新的设备、网络或信号基础设施即可投入使用。千视哪款视频编码器产品支持NDI?千视电子是NewTek全球合作伙伴,所有视频编码器产品均支持NDI协议! 多机位拍摄导播应用举例: 当前的多机位移动直播一般采用多部手机拍摄并上传至视频云,再导入进直播软件进行切换的方式,不但消耗过多公网带宽,而且各机位由于网络延迟不等,将会出现几秒甚至几十秒的时差,导致信源的音画无法互相同步。如果使用摄像机拍摄,并在前方通过导播台进行切换后回传,则需要使用SDI视频线连接,活动范围将受到很大限制。 有了千视NDI解决方案,这些问题便迎刃而解,只要在前方架设一台无线路由器和数台千视编码器。 摄像机则可以通过千视电子编码器设备,直接将输出的SDI或HDMI转换成NDI信号,通过网线或Wifi传输,同样可被局域网中的导播电脑接收。这样就算不依靠昂贵的图传设备,也能实现摄像机的自由移动,并确保视频高清、低延时、无卡顿传输。

    时间:2020-06-01 关键词: 音视频信号 编码

  • 比H.265更先进!MPEG-5编码标准落地:华为、高通、三星首批支持

    经过两年时间的紧张工作,由ISO(国际标准化组织)牵头、华为、高通、三星等企业领导制定MPEG-5 EVC编码标准正式落子定稿。 本周,华为、高通、三星出面欢迎MPEG-5 EVC的推出,除了首批支持,三大主要贡献者也表态会采取多种方式扩大新标准的影响力。 MPEG-5 EVC是继1993年的MPEG-1(主要用于CD视频)、1995年的MPEG-2(主要用于DVD和数字广播电视)、2003年的MPEG-4 Part10(AVC/H.264)、2013年的MPEG HEVC(H.265)后,又一划时代的编码标准。 我们知道,当前H.265主要用于4K、HDR(高动态范围)、WCG视频(宽色域),MPEG-5的使命在于让4K、8K、VR/AR、HDR以更快、更优质的方式普及。 经查,MPEG-5 EVC有Layer1(基本模式)和Layer2(主模式)两个层级,Layer 1免授权费,Layer 2则包含所有的技术组件并支持单独开闭,至少120帧、10位精度。 测试数据显示,MPEG-5 EVC在主模式下拥有和H.265相同的视频质量,但平均比特率降低26%;基本模式相较于H.264,平均比特率降低31%,解码时间减少60%。

    时间:2020-05-22 关键词: 华为 高通 格式 编码

  • 淘汰H.265!联发科天玑1000首发支持AV1视频编码

    联发科今天宣布,旗下旗舰级5G SoC处理器天玑1000已支持先进的AV1视频编码格式,这也是全球第一款集成AV1硬件编码器的SoC芯片,可以流畅播放AV1格式的4K/60fps高清视频。 AV1视频编码出自开放媒体联盟(AOM),诞生于2018年6月,相比目前的H.265(HEVC)编码,不仅能保持原视频的分辨率、帧率、比特率,视频体积还能再缩小20%,这就意味着在同等带宽下可以传输更高清的画质。 更诱人的是,AV1编码开源、免版权费,不像H.265那样需高昂的专利费、复杂的专利授权。 而相比于Google推出的另一种视频编码格式VP9,AV1的压缩率也要高出30%。 AOM联盟已经迅速吸引了诸多行业巨头加盟,包括Google、微软、亚马逊、苹果、Facebook、思科、Intel、ARM、Mozilla、Netfix、腾讯、爱奇艺等等,其中爱奇艺是国内第一家支持AV1格式的视频网站。 联发科天玑1000集成了最新的ARM A77 CPU、G77 GPU架构,用于独立的APU 3.0 AI单元、ISP图像单元,并支持5G双模、5G载波聚合、5G双卡双待,号称6GHz以下频段5G速率最快。

    时间:2020-05-21 关键词: 视频 联发科 天玑1000 av1 h.265 编码

  • 二维码的原理是什么样子的

    二维码是什么原理?不知道从什么时候开始,我们的生活突然之间就充满了二维码,看网页要扫二维码,加好友要扫二维码,现在连楼下卖草莓的大爷都支持扫码支付,那么,你有没有想过,这个长得很奇怪的二维码,到底是怎么来的呢?它的原理是什么?看完你就知道了 其实在介绍二维码原理之前你可能已经猜到了,二维码就是把信息翻译成黑白小方块,然后填到这个大方块里,这有点类似中学考试用的答题卡,就是把信息变成机器可扫描图案,一秒钟就能知道你得了多少分。当然,二维码的原理和答题卡还不太一样,这个稍后会讲到。 我们先来说一下二维码的哥哥----条形码。也就是超时收银员扫的那个黑白条,电脑在水平方向上识别粗细不均的黑白条,就能找出藏在其中的商品编号信息,相比于只在一个维度上携带信息的条形码,“二维码”在水平垂直两个维度上都携带了信息,也就做成了方块状的样子,条形码和二维码这一对好兄弟说白了,其实就是给数字、字母、符号等这些字符换了一身衣服,把他们打扮成了能被手机相机识别的黑白条或块。那么,最关键的问题来了,这些字符,到底是怎么变成这种二维码图案的呢? 这就要提到一个人类具有划时代意义的伟大发明“二进制”。我们平时使用的数字。字符、汉字等各种字符,虽然画风完全不同,但是机智的人类发明了一个方法,使他们都可以被统一转换成又0和1组成的二进制数字序列,这个转换的过程叫做编码,国际上有几套通用的编码规则,我们今天就用一个例子来感受一下,编码是怎么回事。比如AB这个由两个英文字母组成的字符,根据编码规则,每一个独立的英文字母都有唯一一个十进制数字与之对应,而像AB这样的字符串则要在对应数字的基础上再做运算,而运算的结果再转换成二进制,就变成“000111001101”这样的数字,哦对了,整个计算机和互联网文明都是建立在这种二进制编码上的,你现在看得视频,不管在你的电脑还是手机里,其实也只是一串0和1而以。 我们回到二维码的生成原理上,字符在变成只有0和1组成的数字序列后,在进行一系列优化算法(此处自行脑补一系列优化算法),就得到了最终的二进制编码。在最后的这串编码中,一个0就对应的是一个'白色小方块',一个1就对应的一个‘黑色小方块’,我们把这些小方块分成8个一组填进大方块里,这就是一个完整的、可以被手机相机识别的二维码图案了。 如果你要问为什么所有二维码角上有3个大方块,其实这3个一模一样的方块是用来给收相机定位的,不信你就扫一扫,是不是不管正着扫、反着扫还是斜着扫结果都是一样的?

    时间:2020-05-13 关键词: 二维码 条形码 编码

  • 李莱曲线和阻力公式在海底管道检测信标设备测试中的研究

    引言 近年来,由于海洋防务和开发的需求,水下遥控技术越来越受重视。目前来看,在海水中传递信息、无线电波和光很容易被吸收并形成散射,而声波在海洋中的传播速度约为1530m/s,远远大于在空气中的340m/s的速度,并且衰减很小。所以声波是目前水中信息传输的主要载体,水声通信成为水下遥控信息传输的主要手段。 海底管道检测信标设备(以下简称信标)应用水声通信的调制解调和编码解码技术对海底管道进行漏磁检测,以防管道因年久失修或腐蚀而出现故障。 信标通常用于水下300m以内的浅海领域的石油管道故障检测。故信标由静止状态从水面下降到水底过程的研究和从水下解锁上浮到水面过程的研究对于信标测试具有实际价值。运动状态的分析、计算、仿真和实验对于确定信标设备的最佳材质和尺寸以及水下的实际布放具有指导意义。 1 、球体水下运动状态研究 信标设备的形状与球形物体有相似之处。在分析信标设备的运动状态前,分析和研究相同材质和体积等参数的球体在水下的运动状态是很有必要和价值的。通过修正球体运动的阻力通式即可得到信标运动所受阻力的通式。 1.1 球体水下受力分析 球体由静止状态从水面下降到水底的过程如图1所示,初速度、初加速度和初始位移均为0。 忽略流体相对地面的运动,球体下落过程做的是变加速直线运动。球体水下主要受力为重力、浮力和阻力。重力和浮力为恒定值,球体阻力随速度的增大而增大。当达到一定速度时,球体处于平衡状态,保持匀速直线运动继续下降,直到水底。信标设备放置区域为200m以内的浅海领域,故分析0m~300m位移内球体的运动。 根据牛顿第二定律得到运动方程: (1) 雷廷智根据牛顿理论推导出球体在理想流体中运动的阻力公式,后经修正得到湍流条件下的压差阻力公式: Re≤1时,阻力为粘滞阻力,应用斯托克斯公式,阻力与速度成正比。 当物体运动的雷诺数在牛顿-雷廷智公式与斯托克斯公式之间,即1≤Re≤500,两种阻力同时影响物体的运动。阿连曾在实验基础上提出一个适合2≤Re≤300的阻力公式[1]: 其中Φ为阻力系数,是雷诺数的函数,即f=f(Re)。英国物理学家李莱用实验方法确定了Φ-Re关系曲线[3]如图2所示。曲线的纵坐标与横坐标均用对数表示。可以看出,Φ随Re的增大而连续平滑地减小。已知Re可以估算出阻力系数。 1) Re≤1时,斯托克斯公式成立,主要考虑粘滞阻力,流体处于层流状态,阻力与速度成正比; 2) 500≤Re≤2≤105时,牛顿-雷廷智公式成立,主要考虑压差阻力,流体处于紊流状态,阻力与速度的平方成正比; 3) 2≤Re≤300时,阿连公式成立,两种力并存,雷诺数不同,两种力的比例不同,流体处于过度状态。 1.2 球体阻力的修正 考虑信标的当量直径很大,故达到沉降末速时的雷诺数可高达李莱曲线的末端,故要推测出超出牛顿-雷廷智公式区域外的阻力系数,而不能仅仅采用固定的阻力系数。根据李莱曲线修正后的阻力系数与雷诺数的关系如下: (7) 由于Re是速度和直径的函数,故直径确定下,可分段求解二阶微分方程,确定每段的初始条件,最后利用MATLAB求解微分方程,得到运动关系曲线。这种修正阻力系数的方法使阻力系数的确定更加精确,进而仿真结果更加可信,适用于高雷诺数下阻力的计算。 1.3 球体MATLAB仿真结果 研究球体在水下的运动过程,方程如下: (8) 整理得: (9) 由于球体下落过程的雷诺数很大,故球体运动过程主要是在紊流区域,符合牛-雷公式,阻力系数为定值。 MATLAB仿真,将高阶微分方程转化为一阶微分方程组,即状态方程,然后基于龙格-库塔法求解此方程组,得到二阶微分方程满足初始条件下的特解。龙格-库塔法的一般调用格式为: 这两个函数分别采用了二阶、三阶、四阶和五阶龙格-库塔法,并采用自适应和变步长的求解方法,即当解的变化较慢时采用较大的步长,从而使得计算速度很快;当解的变化较快时步长会自动变小,从而提高计算精度。 2 、信标水下运动状态研究 2.1 信标阻力公式的修正 修正球体在介质中沉降速度及介质阻力公式,可以分析计算出信标设备在介质中的沉降规律。球形系数X为相同体积下球体的表面积与非球体的表面积之比,用其表征形状与球体的偏离程度。 经过修正后,非球体在水中所受阻力通式为: (12) 其中,Φf为非球体在水中所受阻力的阻力系数,dv为体积当量直径,即等体积下球体的直径。vf为非球体在水中的运行速度。非球体在水下的沉降末速公式为: 一般来说,球体比其他形状的物体更便于介质从周围流过。等体积条件下,球体的表面积最小,球形系数越小,说明物体越不规则,所受的阻力越大,沉降末速也就越小。总信标设备包括压载基座和信标仪器舱。如图3所示。 2.2 信标运动方程的计算 信标下降过程的主要参数如下: SolidWords计算测得总信标设备的表面积约为:S=1.277m2 计算得出: 体积当量直径: ; 球形系数: 修正后的阻力系数为: 下沉过程中,相同密度和当量直径的球体经过计算后的阻力如下: (17) 上浮过程中,信标设备的基座留在水下,信标仪器舱解锁上浮,上浮过程的主要参数如下: SolidWords计算测得信标仪器舱的表面积约为: s=0.8577m2 计算得出: 体积当量直径: 球形系数: 修正后的阻力系数为: 2.3 MATLAB仿真计算 信标下降运动状态仿真如图4; 相同当量直径球体下降运动状态仿真曲线如图5; 信标上升运动状态仿真曲线如图6; 相同当量直径球体上升运动状态仿真曲线如图7。 2.4 信标运动状态结论 信标设备下沉过程中1s达到沉降末速1.59m/s,而后以该速度做匀速直线运动。相同当量直径球体约3s达到沉降末速3.19m/s,后以该速度做匀速直线运动。信标设备上浮过程中1s达到末速1.44m/s,相同当量直径球体约2s达到沉降末速2.175m/s。信标设备的沉降末速约为相同当量直径球体沉降末速的X倍,信标设备的表面积越接近标准球形,其球形系数越接近1,运动末速越接近球体的沉降末速,运动状态越接近具有相同当量直径的球体。可见,该信标的形状与相同当量直径的标准球体相差还是较大的。 3 、山东烟台海试 在船上首先将信标连同基座锁紧后投入海里后进行遥控操作,解锁上浮正常。传输距离约为100m,水深约13m ,上浮时间约为8s~9s,平均速度约为1.5m/s。与仿真结果1.44 m/s相差不大。 4 、总结 本文通过理论推导和仿真推导海底管道检测信标设备的水下布放与解锁上浮的运动状态,通过海试验证理论推导的正确性,最终验证了李莱曲线和阻力公式应用于信标设备运动分析的正确性和可行性。

    时间:2020-05-05 关键词: 设备 测试 编码

  • ASCII uinicode UTF8 UTF16 编码的故事

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节"。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出更多的状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端设备或者打印机遇上这些约定好的字节时,就要做一些约定的动作。遇上 00x10, 终端就换行,遇上0x07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,对于终端就用彩色显示字母。他们看到这样很好,于是就把这些0x20(十进制32)以下的字节状态称为"控制码"。他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的 文字了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的"Ascii"编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。后来,就像建造巴比伦塔一样,世界各地的都开始使用计算机,但是很多国家用的不是英文,他们用到的许多字母在ASCII中根本没有,为了也可以在计算机中保存他们的文字,他们决定采用127号之后的空位来表示这些新的字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了最后一个状态255。从128到255这一页的字符集被称"扩展字符集"。从此之后,贪婪的人类再没有新的状态可以用了,美帝国主义可能没有想到还有第三世界国家的人们也希望可以用到计算机吧!等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有6000多个常用汉字需要保存呢。但是这难不倒智慧的中国人民,我们不客气地把那些127号之后的奇异符号们直接取消掉,并且规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。中国人民看到这样很不错,于是就把这种汉字方案叫做"GB2312"。GB2312 是对 ASCII 的中文扩展。但是中国的汉字太多了,我们很快就就发现有许多人的人名没有办法在这里打出来,特别是某些很会麻烦别人的国家领导人(如朱镕基的“镕”字)。于是我们不得不继续把 GB2312 没有用到的码位找出来老实不客气地用上。后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK 扩成了 GB18030。从此之后,中华民族的文化就可以在计算机时代中传承了。中国的程序员们看到这一系列汉字编码的标准是好的,于是通称他们叫做 "DBCS"(Double Byte Charecter Set 双字节字符集)。在DBCS系列标准里,最大的特点是两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里,因此他们写的程序为了支持中文处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了。那时候凡是受过加持,会编程的计算机僧侣们都要每天念下面这个咒语数百遍:"一个汉字算两个英文字符!一个汉字算两个英文字符……"因为当时各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码,连大陆和台湾这样只相隔了150海里,使用着同一种语言的兄弟地区,也分别采用了不同的 DBCS 编码方案——当时的中国人想让电脑显示汉字,就必须装上一个"汉字系统",专门用来处理汉字的显示、输入的问题,但是那个台湾的愚昧封建人士写的算命程序就必须加装另一套支持 BIG5 编码的什么"倚天汉字系统"才可以用,装错了字符系统,显示就会乱了套!这怎么办?而且世界民族之林中还有那些一时用不上电脑的穷苦人民,他们的文字又怎么办?真是计算机的巴比伦塔命题啊!正在这时,大天使加百列及时出现了——一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它"Universal Multiple-Octet Coded Character Set",简称 UCS, 俗称 "UNICODE"。UNICODE 开始制订时,计算机的存储器容量极大地发展了,空间再也不成为问题了。于是 ISO 就直接规定必须用两个字节,也就是16位来统一表示所有的字符,对于ascii里的那些"半角"字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于"半角"英文符号只需要用到低8位,所以其高 8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间。这时候,从旧社会里走过来的程序员开始发现一个奇怪的现象:他们的strlen函数靠不住了,一个汉字不再是相当于两个字符了,而是一个!是 的,从 UNICODE 开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的"一个字符"!同时,也都是统一的"两个字节",请注意"字符"和"字节"两个术语的不同, "字节"是一个8位的物理存贮单元,而"字符"则是一个文化相关的符号。在UNICODE 中,一个字符就是两个字节。一个汉字算两个英文字符的时代已经快过去了。从前多种字符集存在时,那些做多语言软件的公司遇上过很大麻烦,他们为了在不同的国家销售同一套软件,就不得不在区域化软件时也加持那个双字节字符集咒语,不仅要处处小心不要搞错,还要把软件中的文字在不同的字符集中转来转去。UNICODE 对于他们来说是一个很好的一揽子解决方案,于是从 Windows NT 开始,MS 趁机把它们的操作系统改了一遍,把所有的核心代码都改成了用 UNICODE 方式工作的版本,从这时开始,WINDOWS 系统终于无需要加装各种本土语言系统,就可以显示全世界上所有文化的字符了。但是,UNICODE 在制订时没有考虑与任何一种现有的编码方案保持兼容,这使得 GBK 与UNICODE 在汉字的内码编排上完全是不一样的,没有一种简单的算术方法可以把文本内容从UNICODE编码和另一种编码进行转换,这种转换必须通过查表来进行。如前所述,UNICODE 是用两个字节来表示为一个字符,他总共可以组合出65535不同的字符,这大概已经可以覆盖世界上所有文化的符号。如果还不够也没有关系,ISO已经准备了UCS-4方案,说简单了就是四个字节来表示一个字符,这样我们就可以组合出21亿个不同的字符出来(最高位有其他用途),这大概可以用到银河联邦成立那一天吧!UNICODE 来到时,一起到来的还有计算机网络的兴起,UNICODE 如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8就是每次8个位传输数据,而UTF16就是每次16个位,只不过为了传输时的可靠性,从UNICODE到 UTF时并不是直接的对应,而是要过一些算法和规则来转换。受到过网络编程加持的计算机僧侣们都知道,在网络里传递信息时有一个很重要的问题,就是对于数据高低位的解读方式,一些计算机是采用低位先发送的方法,例如我们PC机采用的 INTEL 架构;而另一些是采用高位先发送的方式。在网络中交换数据时,为了核对双方对于高低位的认识是否是一致的,采用了一种很简便的方法,就是在文本流的开始时向对方发送一个标志符——如果之后的文本是高位在位,那就发送"FEFF",反之,则发送"FFFE"。不信你可以用二进制方式打开一个UTF-X格式的文件,看看开头两个字节是不是这两个字节?下面是Unicode和UTF-8转换的规则UnicodeUTF-80000 - 007F0xxxxxxx0080 - 07FF110xxxxx 10xxxxxx0800 - FFFF1110xxxx 10xxxxxx 10xxxxxx例如"汉"字的Unicode编码是6C49。6C49在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 1100 0100 1001,将这个比特流按三字节模板的分段方法分为0110 110001 001001,依次代替模板中的x,得到:1110-0110 10-110001 10-001001,即E6 B1 89,这就是其UTF8的编码。讲到这里,我们再顺便说说一个很著名的奇怪现象:当你在 windows 的记事本里新建一个文件,输入"联通"两个字之后,保存,关闭,然后再次打开,你会发现这两个字已经消失了,代之的是几个乱码!呵呵,有人说这就是联通之所以拼不过移动的原因。其实这是因为GB2312编码与UTF8编码产生了编码冲撞的原因。当一个软件打开一个文本时,它要做的第一件事是决定这个文本究竟是使用哪种字符集的哪种编码保存的。软件一般采用三种方式来决定文本的字符集和编码:检测文件头标识,提示用户选择,根据一定的规则猜测最标准的途径是检测文本最开头的几个字节,开头字节 Charset/encoding,如下表:EF BB BF UTF-8FF FE UTF-16/UCS-2, little endianFE FF UTF-16/UCS-2, big endianFF FE 00 00 UTF-32/UCS-4, little endian.00 00 FE FF UTF-32/UCS-4, big-endian.当你新建一个文本文件时,记事本的编码默认是ANSI(代表系统默认编码,在中文系统中一般是GB系列编码), 如果你在ANSI的编码输入汉字,那么他实际就是GB系列的编码方式,在这种编码下,"联通"的内码是:c1 1100 0001aa 1010 1010cd 1100 1101a8 1010 1000注意到了吗?第一二个字节、第三四个字节的起始部分的都是"110"和"10",正好与UTF8规则里的两字节模板是一致的,于是当我们再次打开记事本时,记事本就误认为这是一个UTF8编码的文件,让我们把第一个字节的110和第二个字节的10去掉,我们就得到了"00001 101010",再把各位对齐,补上前导的0,就得到了"0000 0000 0110 1010",不好意思,这是UNICODE的006A,也就是小写的字母"j",而之后的两字节用UTF8解码之后是0368,这个字符什么也不是。这就是只有"联通"两个字的文件没有办法在记事本里正常显示的原因。而如果你在"联通"之后多输入几个字,其他的字的编码不见得又恰好是110和10开始的字节,这样再次打开时,记事本就不会坚持这是一个utf8编码的文件,而会用ANSI的方式解读之,这时乱码又不出现了。

    时间:2019-07-10 关键词: ascii 编码

首页  上一页  1 2 3 4 5 6 7 8 9 下一页 尾页
发布文章

技术子站