C语言printf
-3%d 负号代表左对齐 3%d 默认代表右对齐
0101 0101 1个字节byte 是8位 bit
对于int变量来讲 最高位是符号位 0代表正数 1代表负数
1kb=1024字节
1Mb=1024KB
1GB=1024MB
十进制转二进制 八进制 十六进制
比如 123
二进制 123不断除2
八进制 123不断除8
十六进制 123不断除16
二进制转十进制 八进制 十六进制
比如123
二进制 0111 1011
转八进制
每3个为一次 001 111 011
011->1*2的0次+1*2的1次+0*2的2次=1+2+0=3
111->7
001->1
所以八进制为173
转十六进制
每4个为一次0111 1011
1011->1*2的0次+1*2的1次+0*2的2次+1*2的3次=11 11对于十六进制的b
0111->7
所以为7b
八进制转十进制
173
3*8的0次+7*8的1次+1*8d的2次=3+56+64=123
十六进制转十进制
7b
11*16的0次+7*16的1次=123
%d 十进制输出
%o 八进制输出
%x 十六进制输出
所有的集成开发环境看内存都是用十六进制展示的
为啥 00 00 00 7b 显示是 7b 00 00 00
因为英特尔的CPU采用了小端方式进行数据存储 因此低位在前,高位在后
何为低位?何为高位?
0000 0000 0000 0000
前八位就是高位,后八位就是低位
所以为啥 00 00 00 7b 显示是 7b 00 00 00
如果要用八进制表示 前面要加个0表示八进制
如果要用十六进制表示 前面要加个0x表示十六进制
win+r->输入calc打开计算器
scanf需要注意的点
1.如果有%c前面加个空格
比如%d %c
因为scanf中的标准输入缓冲区,如果输入一个整数加空格等等 比如5 c %d对于5 而空格对应%c 就会把空格算进去 因此可以前面加个空格解决
2.写两个scanf
其中有一个scanf含有%c 使用fflush(stdin) //清空标准输入缓冲区
因为scanf标准输入缓冲区第一个写了比如输入5 缓冲区里会放5\n,而第二个scanf如果为%c 缓冲区要输入时候会读取\n,从而跳过导致不能输入,不能卡住(阻塞),因此要使用fflush(stdin) 清空标准输入缓冲区