烽火众智DSP工程师笔试经验
5.简单的程序题。看程序,写出输出见过,用C写的。
6. -7和10的16位二进制补码是什么? 写出Q15 0.25和Q15 0.5
⑴正数的补码 与原码相同。
⑵负数的补码 负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
-7转换成二进制原码是1000000000000111,反码是1111111111111000,补码是反码+1=1111111111111001
10的二进制原码是0000000000001010,是正数,补码和原码一样
DSP芯片的数以2的补码形式表示。每个16位数用一个符号位来表示数的正负,0表示数值为正,l则表示数值为负。其余15位表示数值的大小。
如,二进制数0010000000000011b=8195
二进制数1111111111111100b= -4
数的定标有Q表示法和S表示法两种。
不同的Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;
如,16进制数2000H=8192,用Q0表示
16进制数2000H=0.25,用Q15表示
7.说一下DSP开发的主要步骤。
8.写出strcpy的函数原型。
char* strcpy(char *strDest,const char * strSrc)
{
}
9.写出创建单链表的函数。
struct stu_info{
int x;
struct stu_info *next;
};
void inputstuinfo(struct stu_info**head,int n)
{
}
10. 对一个字符串进行重新排列,使字母在前,数字在后,并且字母和数字的相对位置不变。
include
include
include
函数名:fun
参数: char*s,int *m
函数返回值:chLetter(数组chLetter[N]的数组名)
局部变量:char chLetter[N]; char chNumber[N]; int i,j,k;
char *fun(char*s,int *m)
{
}