19-位运算和预处理

位和字节

一个字节有8个位。

int  4个字节 32个位

 

30在计算机里面的存放:0000 0000 0000 0000 0000 0000 0001 1110 (30)

 -30在计算机里面存放:1111 1111 1111 1111 1111 1111 1110 0010 (-30)

 

 位运算:

在位上面来进行计算,C语言中位运算主要用于硬件开发。嵌入式,单片机。

&   双目按位与  两个位为1  结果为1

|   双目按位或  两个位为0  结果为0  或者  只要有1个为1 结果为1

~   单目按位取反  01 10  5取反是不是-5? 不是

^ 双目按位异或 两个位不相同 结果为1

<< 左移  a<<2;a的二进制存储向左边移动2个位

1、不存在溢出的情况,实际上在向左移动的过程中移动一个位相当于2n次方

2、左移  低位补0

 

>> 右移 a<<2;a的二进制存储向右边移动2个位

1、高位补0还是1 取决于这个存放的方式

30 0000 0000 0000 0000 0000 0000 0001 1110(0)

-30     1111 1111 1111 1111 1111 1111 1110 0010(1)

 

位段:

位段也是一种结构体类型。

它的定义,是以二进制单位来定义。

 

结构 结构名

类型 成员名:长度(位);

类型 成员名:长度(位);

类型 成员名:长度(位);

 

其他的用法跟结构体一样。

 

预处理:

同样是为程序的速度。

宏定义:#define

宏定义之后一定不要加分号。

 

#include

#include //conio.h

#include //math.h

#include

#include

#include  //只不过就是多了几个画图的

 

 

******************************************************************************/

//#include "jasg.h"   //不是标准的输入输出头文件

//

//

//

///*

//1<>  他直接绕过当前的项目,去C库中寻找stdio.h

//2、“” 它先从我们当前的项目中区寻找stdio.h 找到了就用,没有找到,再去C库中去寻找stdio.h

//*/

//

////宏定义知识一种标志 在程序里面遇到宏名 用相应的符号替换。

////在内存里面是没有的

 

 

条件编译:

1#if命令

含义:如果#if后面的参数表达式为真,编译从#if #endif之间的代码,否者不编译。

#else  else

 

2#ifdef(有宏定义,就编译)  #ifndef(没有宏定义,就编译)。

3#pragma

 

转载于:https://www.cnblogs.com/tiantiancode/p/11131877.html

你可能感兴趣的:(19-位运算和预处理)