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

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

移位操作,置位,清零操作等

统计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);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值