1.C语言进制介绍及转换
(1)二进制:0、1二进制逢2进1
(2)十进制:0 - 9,逢10进1。
(3)十六进制:0 - 9及A-F,满16进1。
C语言中二进制以0b或者0B开头表示。十进制用正常数字表示。十六进制用0x或者0X开头表示,A-F并不区分大小写。
int main()
{
int a = 0b10;//二进制
int b = 200;//十进制
int c = 0xfa;//十六进制
}
2.进制的输出格式
%d :十进制整数。%x :十六进制整数。%#x :显示前缀 0x 的十六进制整数。%#X :显示前缀 0X 的十六进制整数。
int main()
{
int a = 10 ;
printf("十进制:%d\n",a);
printf("十六进制:%x\n",a);
printf("十六进制(0x):%#x\n",a);
printf("十六进制(0X):%#x\n",a);
return 0;
}
#include <stdio.h>
int main()
{
// 二进制:0b或者0B
int num = 0b10;
int num1 = 0B11;
printf("num=%d,num1=%d\n", num, num1);
// 八进制:0xxx
int e = 034;
printf("e=%d\n", e);
// 十进制
int a = 2;
int b = 3;
printf("a=%d,b=%d\n", a, b);
// 十六进制:0x或者0X
int c = 0x11;
int d = 0X21;
printf("c=%d,d=%d\n", c, d);
// 总结:整数的数字可以有多中写法:二进制0b 八进制0开头 十进制 十六进制0x->代表数字其实一样的!
// 不同进制之间的数字可以计算
printf("%d", 10 + 015 + 0x20);
// 10 + 13 + 32
return 0;
}
3.进制之间的转换
(1)二进制转换成十进制
从最低位开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。
int main()
{
int num = 0b1101;
// 1*2^0 + 0 +1 * 2^2 + 1 * 2^3
// 1 + 0 + 4 + 8
printf("num=%d", num);
return 0;
}
(2)十进制转换成二进制
将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
例如35转换成二进制
(3)十六进制转换成十进制
从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。
(4)十进制转换成十六进制
将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。
(5)二进制和十六进制转换
低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
4.C语言中原码 反码 补码的认识和转换
在C语言中原码反码和补码都是用二进制的形式表示,又有正数和负数之分,正数的首位是0,负数的首位是1。正数的原码反码补码合一都是一样的,负数的反码首位符号位不变其他位取反0→1,1→0,补码是在反码的基础上加一,当正数和负数进行计算的时候负数需要转换为补码进行运算,不然会将负数的符号位算进去。
5.C语言中的数据类型之基础类型
基本类型包括:整型(短整型short、整型int、长整型long、长长整型)、浮点型(单精度型float、双精度型double、长双精度型long double)、字符型char
整型:
// 基本类型:整型,有符号与无符号
// short 短整型
int main()
{
// 有符号短整型
// short num = -1234;
// signed short num1 = 6789;
// unsigned short num2 = 775;
// // 输出打印看看
// printf("%hd %hd %hu\n", num, num1, num2);
// printf("%d %d %d\n", num, num1, num2);
// 整型
// 有符号整型
// int num = -91;
// signed int num1 = 88;
// unsigned int num2 = 6481;
// printf("%d %d %u", num, num1, num2);
// 长整型long
// 有符号长整型 l|L,字面量尾缀
// 数字字面量默认int类型
// long a = 200l;
// signed long b = -6329L;
// unsigned long c = 754UL;
// printf("a=%ld,b=%ld,c=%lu", a, b,c);
// 长长整型
// 有符号长长整型
long long a = -7779ll;
signed long long b = 9876LL;
unsigned long long c = 99999ull;
printf("%lld %lld %llu", a, b, c);
return 0;
}
浮点型:
int main()
{
// 小数字面量默认都是double类型 3.14 99.31 4.6e2
// 单精度小数float
// float a = 2.2f;
// float b = 3.56f;
// float c = 4.2e2;
// printf("a=%f\n", a);
// printf("b=%.1f\n", b);
// printf("c=%.3f\n",c);
// 双精度
// double a = 4.656789;
// double b = 6.8e3;
// printf("a=%.3lf\n",a);
// printf("b=%f\n",b);
//long double 长双精度
// long double num = 4.56789L;
// printf("%.2Lf",num);
return 0;
}
字符类型:
// 字符
int main()
{
// 定义一个字符变量
// char ch = 'w';
// char ch1 = '9';
// char ch2 = '\"';
// char ch3 = '\\';
// printf("%c %c %c %c\n", ch, ch1, ch2,ch3);
// 字符本质就是数字
// char ch = 'a';
// char ch1 = 'A';
// char ch2 = '&';
// char ch3 = '9';
// printf("%d %d %d %d\n", ch, ch1, ch2, ch3);
// // 字符可以进行运算
// printf("%d", ch2 + ch3);
// char类型存储数字
// char ch = 65;
// printf("%d %c", ch, ch);
// printf("%c\t%c\t%c\t%c\t\n", ch, ch1, ch2, ch3);
// printf("%c\t%c\t%c\t%c\t\n", ch, ch1, ch2, ch3);
return 0;
}