前提:
printf语句和scanf语句是源自与stdio.h这个头文件中的函数,它们的作用分别是输出和输入。
应用:
printf("hello world\n"); //用于输出(打印)hello wolrd这个语句。
int a;
scanf("%d",&a); //用于向a空间输入一个整形数据
注意:使用scanf的前提是先要定义一个变量(开一个空间)。
一、进制数和进制前缀
1、进制数:
C语言里面的进制数:二进制 八进制 十进制 十六进制
十进制:逢10进1,每一位上的数字是0 ~ 9
二进制:逢2进1,每一位上的数字 0 、1
八进制:逢8进1,每一位上的数字0 ~ 7
十六进制:逢16进1 ,每一位上数字0 ~ 9 a b c d e f
2、进制前缀
在数据的前面加前缀表示不同的进制数
二进制:0b或0B
八进制:0
十进制:没有前缀,C语言中默认就是十进制
十六进制:0x或0X
二、不同进制数的输入和输出
格式控制符:
short int long long long
十进制 %hd %d %ld %lld
八进制: %ho %o %lo %llo
十六进制: %hx %x %lx %llx
如果要输出显示前缀可以:%#hx %#x %#lx %#llx
注意:二进制没有格式控制符(无法直接输出二进制格式的数据)
三、进制转换
1、十进制转二进制、八进制、十六进制数
由十进制数除以要转的进制(如需转二进制,即除以2),得到的商继续除以要转的进制,直到商为0,然后每一轮的余数逆序排列。(不好理解可看图)
(实在没耐心画了,见谅见谅哈哈)。
2、二进制 八进制 十六进制 转 十进制
规律:相应位置上的数字*权重,相加
权重:数据的每一位上都对应一个权重,以二进制举例,从低 位到高位,该位权重等于上一位权重乘以二,最低为权重为2的零次幂。
10进制: 3 4 5 6
1000 100 10 1
10^3 10^2 10^1 10^0
3*10^3 + 4*10^2 + 5 * 10^1 + 6 * 10^0 == 3456
2进制的数据:0b 1 1 0 1
2^3 2^2 2^1 2^0
1*2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 8 + 4 + 1 == 13
8进制的数据: 0 1 4 1
8^2 8^1 8^0
1*8^2+4*8^1+1*8^0 == 64 + 32 + 1 == 97
16进制的数据:0x6 1
16^1 16^0
3、二进制 八进制 十六进制之间的转换:
1位八进制== 3位二进制 (421)
1位十六机制 = 4位二进制 (8421)
8进制数:
0 ~ 7
00 ~ 000
01 ~ 001
02 ~ 010
03 ~ 011
04 ~ 100
05 ~ 101
06 ~ 110
07 ~ 111
16进制数:
0x0 ~ 0b00000000
0x1 ~ 0b00000001
0x2 ~ 0b00000010
0x3 ~ 0b00000011
0x4 ~ 0b100
0x5 ~ 0b101
0x6 ~ 0b110
0x7 ~ 0b111
0x8 ~ 0b1000
0x9 ~ 0b1001
0xa ~ 0x1010
0xb ~ 0x1011
0xc ~ 0x1100
0xd ~ 0x1101
0xe ~ 0x1110
0xf ~ 0x1111
4、十六进制数据存储和字节的关系
一个十六进制数据 == 4位二进制
1个字节存储8位二进制
1个字节可以存储两个十六进制数据
标签:10,入门,十六进制,二进制,C语言,八进制,十进制,进制 From: https://blog.csdn.net/nobgo/article/details/141034559