知识点概括:
1,进制数的存在
2.各进制之间的相互转换
3.位运算符
4.左移 右移 运算符
栈区分配原则:从高到低分配,从低到高存取
//1个字节 又是 8位2进制数
// int a = 010 + 010; //0开头是8进制 //0b开头是2进制 //0x开头是16进制
// printf("%d", a); //%d打印十进制整数 //%x打印16进制整数 //%o打印8进制
// //位运算符
// //按位与 & (同为1, 则为1,否则为0)
// printf("%d\n", 7&5);
// //按位或 | (只要有一个为1,则为1,否则为0)
// printf("%d\n", 3|5);
// //按位非 ~ ()
// printf("%d\n", ~5);
// //按位异或 ^ (相同为0,不同为1)
// // 3 = 011
// // 5 = 101
// // 6 = 110
// printf("%d\n", 5 ^ 5);
// //左移 运算符 (左移一位相当于乘2)
// // 0000 0010
// // 0000 0100
// // 0000 1000
// printf("%d\n", 2 << 2);
// //右移 运算符 (右移一位相当于除2)
// //0001 0000
// //0000 1000
// printf("%d\n", 10 >> 2);
// //2进制数的高四位和低四位互换
// unsigned char a = 130; //存储左移之后的结果
// unsigned char left = 0; //存储右移之后的结果
// unsigned char right = 0;
// left = a << 4;
// right = a >> 4;
// printf("%d\n", left|right);
// //2进制数的奇偶位互换
// unsigned char b = 0b10110111;
//
// //如果想做清零操作:使用按位与,清零为0,保留位为1
//
// //(1)先左移一位
// //(2)保存偶数位,将奇数位清零
// //(3)右移一位
// //(4)保留奇数位,将偶数位清零
// //(5)按位或
// unsigned char left = 0; //存储左移之后的结果
// unsigned char right = 0; //存储右移之后的结果
// left = b << 1;
// left = left & 0b10101010;
// right = b >> 1;
// right = right & 0b01010101;
// printf("%d", left | right);
//栈区内存分配原则:从高到低分配,从低到高存取.
// int a = 10;
// int b = 5;
// printf("%p\n", &a);
// printf("%p\n", &b);
// int a[5] = {1, 2, 3, 4, 5};
// for (int i = 0; i < 5; i++) {
// printf("%p\n", &a[i]);
// }
// printf("%p", a);
// int a = -5;
// int b = 10;