C++ 位操作

来源:互联网 发布:设计图标的软件 编辑:程序博客网 时间:2024/06/14 10:31

最近很不幸的接到了解析雷达报文的任务,按照上边的意思,这个东西需要用C++来完成,但在这之前我从来没有接触过C++。所幸C还是会一点点(只是一点点),就硬着头皮做了起来,在这过程中遇到了很多问题,通过翻书上网查解决了一部分,也还有一些不明不白的,就在这里做个记录吧。

1.大端机与小端机

由于所要解析的雷达报文有许多信息都是需要按位(bit)处理,所以大端机和小端机是什么就必须理解。这是数据在内存中的两种不同方式,对于大端机,最高有效位(MSB)存储在最低的内存地址上,以此存在后边的地址,小端机则相反,最低有效位(LSB)存储在最低的内存地址上。

2.位运算符

&按位于每一位一一对应进行于运算。

|按位或每一位一一对应进行或运算。

^按位异或每一位一一对应进行异或。

~按位取反每一位都取反,即1取0,0取1。

     <<和>>平移,例如:int a=0; int b=(a<<8);b就是a的二进制码向左平移8位所得到的数。

   3.*和&

这两个家伙是最让我苦恼的,因为所有的解析返回值都是成功标示,数据的一些改变就只有通过指针来进行。最后查了一些资料才明白,*是间接运算符int* a标示a是一个指针,*a是int类型的,而&是地址运算符 可以用来取某一个值的地址。在函数参数中使用&运算符表示某一个参数是对值的引用,最这一个参数的改变会一直存在。例如:

int Function(int& num)我们有这样一个函数,然后这样调用他;

     int a=1;

int b;

b=Function(a);

这时,在函数Function中改变了参数a=num的值,在外部,a的值也会随之改变。

原创粉丝点击