位和字节
一个字节有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
~ 单目按位取反 0变1 1变0 5取反是不是-5? 不是
^ 双目按位异或 两个位不相同 结果为1
<< 左移 a<<2;把a的二进制存储向左边移动2个位
1、不存在溢出的情况,实际上在向左移动的过程中移动一个位相当于2的n次方
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 <stdio.h>
#include <conio.h> //conio.h
#include <math.h> //math.h
#include <windows.h>
#include <string.h>
#include <graphics.h> //只不过就是多了几个画图的
******************************************************************************/
//#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