在日常生活中,我们接触的数字,大都是十进制的数字,今天我学习了进制和位运算后,觉得很受益,接下来谈谈我的学习内容:
一.常用的进制:
1)十进制: 10
日常中用的都是十进制.
2)二进制: 0b1001
内存中变量的储存形式就是二进制.
3)八进制: 0312
4)十六进制:ox15ef
用0-9/a-f来表示十六进制.
二.进制的转换:
重点是二进制转十进制,十进制转二进制.
三.printf以不同进制形式进行输出:
%d 带符号的十进制
%o 不带符号的八进制
%x 不带符号的十六进制
%u 不带符号的十进制
%c 输出一个字符
%s 输出一个或多个字符
%f 以小数形式输出,默认6位小数
四.变量的内存分析:
1)字节:内存以字节为单位进行存储
2)不同类型的数据类型所占的字节数不同
int - 4个字节
char - 1个字节
double - 8个字节
shot - 2个字节
long - 8个字节
3)每个变量都有地址,第一个字节的地址是变量的地址
4)查看地址的方式: %p
例如:
#include <stdio.h>
int main()
{
int a = 10;
printf("%p", &a);//打印结果0x7fff5ed37bf
return 0;
}
五.
位运算:
1)按位与: &
只有两个二进制位都是1的时候,结果为1,其余都为0;
2)按位或: |
只要有一个是1,结果就为1,其余为0;
3)按位异或: ^
二进制位不一样的为1,其余为0.
两个特性:
1)a^a=0;
2)a^b^c = b^a^c
3)按位取反: ~ 每位的0和1互换
4)左移: a<<2将a的二进制位整体左移2位
特性:a << n,相当于a*2的n次方(效率较高).
5)右移: a>>2将a的二进制位整体向右移动2位
特性:a >> n,相当于a*2的-n次方
6)利用&来判断数字的奇偶性:
a&1=1就是奇数;
a&1=0就是偶数.
总结:利用进制的算法和位运算,可以将两个数的值互换,请看下题: