• 嵌入式培训学习历程第十二天


    ˆ  好吧,几天讲的进制。有点晕了。。唉。

      1.数的表示 :

          基数 : 用来组成某种进制数的可用的数字的个数

          权值 :某种进制数各位数表示的数的大小

      2. 十进制转二进制

          除二反向取余法

          按权展开

          扩展 : 二进制转十进制  :   按权相加

      3.二进制数的权值

      0  1  2  3  4    5    6    7      8      9      10

      1  2  4  8  16  32  64  128  256  512  1024

      4.十六进制超过十之后的值用字母表示

        A 10   B 11  C 12  D 13  E 14  F 15

      加油站 : 小数转化为二进制  使用  乘二取整法

      5.原码,反码,补码规则

        N的补码(8位):
        正数 : 0(最高位)+ N的二进制展开
        负数: 1(最高位)+ N的绝对值二进制展开,符
        号位保持不变,其他位按位取反再加1

      有符号数的范围 :-2ˆ(n - 1)≈ 2ˆ(n - 1)- 1 

      无符号数的范围 :0 ≈ 2ˆn - 1

        扩展 : 人为规定,- 2ˆ4  二进制  1000

      6.   实现定义(Implementation defined):C标实现定义(Implementation-defined):C标准未明确说明,但是编译器会明确定义,编译器文档中有明确定义。译器文档中有明确定义    

        如char类型是被当作无符号型还是有符号型,C

        标准中未明确说明,但不同的编译器是有明确    

        标准中未明确说明 但不同的编译器是有明确规定的

      7.  整常量

    后缀   十进制常量 八进制,十六进制常量

    int
    long int
    long long int

    int 、unsigned int
    unsigned
    long 、unsigned long int
    long long 、unsigned long long

    U 或 u

    unsigned int
    unsigned long int
    unsigned long long

    unsigned int
    unsigned long int
    unsigned long long

    L或l

    long int
    long long int

    long 、unsigned long int
    long long 、unsigned long long

    既有u或U,又有l或L

    unsigned long int
    unsigned long long

    unsigned long int
    unsigned long long

    LL或ll

    long long int

    long long 、unsigned long long

    既有 u或U 又有ll或LL

    unsigned long long unsigned long long

        注意 :整常数么有 short 型  

    8. 整形提升 (提升为int 或 unsigned int)

        (1). 三种数据类型 : char, short, bit-filed(结构体)

        (2). 两种情况 ;

                1.函数参数列表中出现‘...’

                2.算术运算中的类型转换

                注意: 位截断和位拓展

      重要:

        

      9.类型转换 : 赋值和强制类型转换两种方式。

      10. 位域 

          (1). 数据在位域中不一定是连续存放的

          (2).不能够进行取址运算

      课后习题 :1.把十进制数转换成2进制,8进制, 16进制 。

    #include <stdio.h>
    typedef enum {hex_2 = 2, hex_8 = 8, hex_16 = 16}hex;
    
    void change_hex(int, int []);
    int input_hex(int , int [], int);
    
    int main(int argc, char *argv[])
    {
        int num[1024];
        int num_10;
    
        printf("Enter 10_hex numbers : ");
        scanf("%d", &num_10);
    
        change_hex(num_10, num);
    
        return 0;    
    }
    
    void change_hex(int change_num_10, int change_num[1024])
    {
        int change_itemp;
        hex n;
    
        printf("Enter 2 8 16 to choose 2_hex, 8_hex, 16_hex :");
        scanf("%d", &change_itemp);
    
        switch(change_itemp)
        {
            case hex_2 :
                input_hex(change_num_10, change_num, 2);
                break;
            case hex_8 :
                input_hex(change_num_10, change_num, 8);
                break;
            case hex_16 :
                input_hex(change_num_10, change_num, 16);
                break;
            default :
                printf("Enter error!!");
                return ;
        }
    
        return ;
    }
    
    int input_hex(int input_num_10, int input_num[1024], int input_n)
    {
        int i  = 0;
        int num = input_num_10;
    
        do {
            input_num[i] = input_num_10 % input_n;
            input_num_10 /= input_n;
            i ++;
        }while( 0 != input_num_10);
    
        printf("The num %d to %d is : ", num, input_n);
        if(16 == input_n) {
            printf("0x");
        }
        if(8 == input_n) {
            printf("0");
        }
        for(i = i - 1; i >= 0; i --)
        {
            if(16 == input_n) {
                if(input_num[i] > 10) {
                    printf("%c", ('A' + (input_num[i] - 10)));
                    continue;
                }
            }
                printf("%d", input_num[i]);
        }
        printf("
    ");
    
        return 0;
    }
    进制转换源码

           2.计算输入一个自然数转换成二进制后,有多少个1

      1 #include <stdio.h>
      2 
      3 void number_1(int [], int);
      4 
      5 int main(int argc, char argv[])
      6 {
      7     int num;
      8     int bijiao_num[2] = {0};
      9 
     10     printf("Enter a number : ");
     11     scanf("%d", &num);
     12 
     13     number_1(bijiao_num, num);
     14 
     15     printf("The number %d have %d number:1.
    ", num, bijiao_num[1]);
     16 
     17     return ;
     18 }
     19 
     20 void number_1(int number_1_num[2], int num)
     21 {
     22     int itemp = 0;
     23     do {
     24         itemp = num % 2;
     25         ++ number_1_num[itemp];
     26     }while(num /= 2);
     27 
     28     return ;
     29 }
    View Code

        英语 : character(字符)  keyword(关键字)  reserved word(保留字)

            好吧,今天发神经了。!!!!

  • 相关阅读:
    使用反射调用某个类的成员方法
    java反射机制
    SVProgressHUD
    __objc__
    loadView
    v2ex 下拉刷新 SCRootViewController
    stuck with
    v2ex 下拉刷新模块
    转载
    vue-cli脚手架构建了项目如何去除Eslint验证(语法格式验证)
  • 原文地址:https://www.cnblogs.com/cxw825873709/p/3226006.html
Copyright © 2020-2023  润新知