Bootstrap

C语言学习知识点总结2

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;

}

;