您的位置:首页 > 编程语言 > C语言/C++

C/C++软件工程师就业求职手册学习笔记---第七章

2014-04-03 14:29 246 查看

第七章 位运算与嵌入式编程

移位操作,置位,清零操作等
统计1出现的次数,可参照下面文章。 http://blog.csdn.net/fengzhizizhizizhizi/article/details/21404383 例子1:
列举并解释C++中四种运算符转化,说明他们的不同点
1、const_cast 操作符:即可以在特殊情况下,解除const成员函数的限制。
2、dynamic_cast操作符:用于判断运行时所指向对象的确切类型,可以将一个姐累的指针指向不同的子类(派生类),然后将被转型作为基础类的对象还原成原来的类,不过仅限于对象指针的类型转换。
3、reinterpret_cast操作符:将一个指针转换成其他类型的指针,可以是毫不相干,void* 到char *,int* 到float *。
4、static_cast操作符:在相关的对象和指针类型之间转换。有关类必须是通过继承构造函数或者是转换函数联系的,他能将数域较大的类型转换为较小类型。
/****************************理解不深,后面补上******************************/
例子2:如何访问特定位置内存。

int*ptr;
ptr=(int*)0x6719;
*ptr=0xaa55;


也可以:
*(int*)0x6719=0xaa55;


例子3:

__interruptdouble compute_area(double radius)
{
         double area=PI*radius*radius;
         printf("area =%f",area);
         return area;
}


第一,不能有返回值;
第二,不能传递参数;
第三,很多编译器或处理器,浮点数是不可重入的,有些处理器或编译器需要使用额外的存储器入栈,有些编译器或处理器不允许在ISR中做浮点运算。此外,ISR应该是短而且有效率的,在ISR中做浮点数不好。
第四,printf()经常出现重复和性能上的问题。

volatile型变量,用时会重新读取该变量,而不是保存在寄存器中的备份。使用场景:
1、并行设备的硬件寄存器(如状态寄存器);
2、一个中断子程序中会访问到的非自动变量;
3、多线程应用中被几个任务共享的变量。
判断big endian littleendian

int checkCPU()
{
         union w
         {
                  int a;
                  char b;
         }c;
         c.a=1;
         return(c.b==1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: