关于操作有符号数的溢出问题 在计算机中,数值的二进制表示方法主要有:原码、反码和补码。通常取最高位为符号位,0表示正数,1表示负数。正数的原码、反码、补码一样。而负数的原码最高位取1,数值位取负数绝对值的二进制值;反码的符号位为1,其余位取反;补码的符号位为1,其余位取反加1。在32位计算机中,有符号字符型变量的取值范围是-27 ~ 27-1,有符号整型变量的取值范围是-215~ 215-1,如果将有符号整型变量赋给有符号字符型变量,则高位被截断,保留低八位。
队列的基本运算实现 队列(queue)队列是一种先进先出(first in first out,FIFO)的线性表。它只允许在表的一端(队尾/rear)插入元素,而在另一端(队头/front)删除元素。插入操作称为入队或进队,删除操作称为出队或离队。队列示意图如下:1、 顺序队队列的顺序存储结构需要使用一个数组和两个整型变量来实现,数组用于存储队列中的所有元素,两个整型变量分别用于存储队头元素
栈的基本运算实现 栈是一种只能在一端进行插入和删除操作的线性表。表中允许进行插入和删除操作的一端称为栈顶。栈顶的当前位置是动态的,由一个称为栈顶指针的位置指示器指示。表的另一端称为栈底。不含数据元素的栈称为空栈。栈的插入操作称为压栈或进栈,栈的删除操作称为退栈或出栈。栈的主要特点是“后进先出(LIFO)”。1、 顺序栈假定栈的元素个数不超过MaxSize,所有的元素都具有同一数据类型ElemType。采用栈
单链表的运算实现 线性表的链式存储结构——链表,包括单链表、双链表、循环链表等。单链表的结点由数据元素和指向下一个结点的指针构成,是最简单的一种链表结构。 对单链表的操作很多,如查找、插入、删除、逆置、打印等,现对这些操作的实现做一个小结,代码用C语言实现。#include#includetypedef struct LNode{ char data; struct LNode *
百度员工离职总结:如何做个好员工? 2014年7月4日,我从百度离职了。这是第一次,我不是因为和老板闹翻而离职;这是第一次,我带着晋升的喜悦而离职;这是第一次,我带着满满的收获而离职。我曾经认为,我永远不会成为一个好员工,因为我太独、太挑剔、不喜欢听话的好孩子、而且讨厌一切想要改变我的人。但是三年过去,我改变了不少,我必须承认,所谓“进步”的过程,就是被认可的过程,也是被“驯化”的过程。所谓“驯化
几个常见字符串处理函数的实现原理 字符串是一种常见的数据结构,对字符串的处理又可以十分灵活,所以在实际开发,尤其是非数值处理中,字符串的应用非常广泛。虽然很多字符串操作都封装在了函数库里,应用程序可以直接通过调用库函数来实现字符串处理,然而对于开发者而言,若能了解其底层实现原理,对于应用编程而言还是大有裨益的。这篇文章主要介绍几种常用的字符串处理函数的实现原理。一、strlen函数strlen函数:计算字符串的实际长度
二维数组中的查找 数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请题目:在一个二维完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:下面是一个满足题目要求的二维数组。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于不含该数字,返回false。算法分析:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数
语音识别之初体验 一、概述作为最自然的人机交互方式 --语音,正在改变人们的生活,丰富多媒体技术的应用。语音识别技术是语音信号处理的一个重要分支,也是近年来很火的一个研究领域。随着科技的飞速发展,语音识别不仅在桌面PC和大型工作站得到了广泛应用,而且在嵌入式系统领域也占有一席之地,如智能家居、苹果的Siri、车载语音识别系统等。相信在不久的将来,语音识别技术必定会渗透在人们生活的每个角落。二、语音识别系统的
嵌入式Linux学习小结 嵌入式Linux学习心得这两个月一直在学习Linux。作为一名初学者,学习期间难免磕磕碰碰、走弯路,但是,抱着不怕失败、多尝试的信念,最终还是坚持下来了。现在已经清楚Linux的框架,知道怎么去开发一个Linux程序,同时,随着学习的深入,我发觉自己已经爱上Linux了。下面简单谈谈我的Linux学习体会,也算是对这段时间的一个小小总结。嵌入式Linux(ARM+Linux)学习步骤:
LCD开发之汉字显示 一、LCD显示原理利用液晶制成的显示器称为LCD,依据驱动方式可分为静态驱动、简单矩阵驱动以及主动矩阵驱动3种。其中,简单矩阵型又可再细分扭转向列型(TN)和超扭转式向列型(STN)两种,而主动矩阵型则以薄膜式晶体管型(TFT)为主流。一块LCD 屏显示图像不但需要LCD驱动器,还需要有相应的LCD控制器。通常 LCD 驱动器会以 COF/COG的形式与LCD 玻璃基板制作在一起,而 LC
Linux驱动的两种加载方式过程分析 一、概念简述在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载。静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用。静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新编译和下载内核,效率较低。若采用静态加载的驱动较多,会导致内核容量很大,浪费存储空间。动态加载利用了Linux的module特性,可以在系统启动后用insmod命令添加模块(.ko),在不需要
Linux实现音频录放 走进WAVE文件WAVE是录音时用的标准的Windows文件格式,文件的扩展名为“wav”,数据本身的格式为PCM或压缩型,属于无损音乐格式的一种,符合RIFF(Resource Interchange File Format)规范。所有的WAV都有一个文件头,这个文件头音频流的编码参数。数据块的记录方式是小端(little-endian)字节顺序,标志符并不是字符串而是单独的符号表1
计算机是如何启动的 零、boot的含义先问一个问题,”启动”用英语怎么说?回答是boot。可是,boot原来的意思是靴子,”启动”与靴子有什么关系呢? 原来,这里的boot是bootstrap(鞋带)的缩写,它来自一句谚语:"pull oneself up by one's bootstraps"字面意思是”拽着鞋带把自己拉起来”,这当然是不可能的事情。最早的时候,工程师们用它来比喻,计
Linux声卡驱动移植和测试 一、分析驱动程序,根据开发板修改代码;代码太长,就不贴了,几个注意点:1、 查看开发板原理图和S3C2410的datasheet,UDA1341的L3MODE、L3DATA、L3CLOCK分别与S3C2410的GPB2、GPB3、GPB4相连,IISLRCK=GPE0, IISSCLK=GPE1, CDCLK=GPE2,IISSDI=GPE3, IISSDO=GPE4,部分代码如下:
Linux音频驱动简述 一、数字音频音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理。数字音频系统通过将声波的波型转换成一系列二进制数据,来实现对原始声音的重现,实现这一步骤的设备常被称为模/数转换器(A/D)。A/D转换器以每秒钟上万次的速率对声波进行采样,每个采样点都记录下了原始模拟声波在
I2S音频总线学习 I2S音频总线学习(一)数字音频技术一、声音的基本概念 声音是通过一定介质传播的连续的波。图1 声波重要指标:振幅:音量的大小 周期:重复出现的时间间隔 频率:指信号每秒钟变化的次数声音按频率分类:图2 声音的频率(语音信号频率范围:300Hz-3kHz)声音的传播携带了信息,它是人类传播信息的一种主要媒体。 声音的三种类型
虚拟机VMware下安装Red Hat Linux 9.0步骤详解 注意:本安装全部是在虚拟机上进行的,用的是ISO镜像文件安装。1.安装完VMwareWorkstation后,启动VMwareWorkstation,新建一个虚拟机,其主界面如下图。 2.VMware Workstation的配置 VMwareworkstation安装完毕后,利用它可以建立多个虚拟机,每新建一个虚拟机,就会要求你建立一个配置文件。这个配置文件实际上相当
Linux常用shell命令(学习小结) 1. man 对你熟悉或不熟悉的命令提供帮助解释eg:man ls 就可以查看ls相关的用法注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。2. ls 查看目录或者文件的属*,列举出任一目录下面的文件eg: ls /usr/manls -la.d表示目录(directory),如果是一个"-"表示是文件,如果是l则
嵌入式系统的基础总结 1、嵌入式系统的定义以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗的严格要求的专用计算机系统。2、嵌入式系统的组成硬件部分:嵌入式微处理器、外围硬件设备;软件部分:嵌入式操作系统、特定的应用程序。嵌入式微处理器外围设备是指在一个嵌入式系统当中,嵌入式处理器以外的完成存储、通信、调试、显示等辅助功能的其它部件,根
Linux驱动开发之LED驱动 #include#include#include#include#include#include#include#include#include#include#include#include#include#include#define S3C2410_GPFCON S3C2410_GPIOREG(0x50)#define S3C2410_GPFDAT S3C2