嵌入式c——第一课(进制转换,结构体,变量)

目录

一、进之间的相互转换

1、表示形式

2、计算

二、变量

1、运算符

 2、常用变量定义

 几种特殊定义变量

 三、结构体

1.枚举和结构体的区别

 2.结构体定义

 3、结构体使用


一、进之间的相互转换

1、表示形式

  • 二进制:0B
  • 十进制:直接写数字即可
  • 16进制:0X(当数字大于十时,10用A,11用B,12用C,13用D,14用E,15用F)

2、计算

例:十进制数15,二进制表示为0B1111,16进制表示:0X0F

 重点:二进制转换为十六进制:一个十六进制数等于4位二进制数,通常用8421码来计算,也可以用电脑计算机计算

例如:

 表格中二进制数为:11010101,根据四位二进制数表示一个16进制数,所以将二进制数分为两组(如果不够四位将其补充成四位,也就是补0),每组从左往右依此用8421与其对应,然后从右往左每四个进行计算,计算方式为用刚才对应的数字二进制数相乘,得到一个值,将四个值加在一起,换成16进制后得到最终结果。

二、变量

1、运算符

  • 算数运算符
  • 关系运算符
  •  逻辑运算符
  •  位操作

 位操作解析:

  •  &(与):A&B(其中A,B都为二进制数下同)

当俩个都为1时结果才为1

代码示例:

#include<stdio.h>
int main()
{
    int a;
    a=3&5;
    printf("a=%d\n",a);
    return 0;
}

 打印结果:

  • |(或):A|B

有一个为1,结果就为1

代码示例:

#include<stdio.h>
int main()
{
    int a;
    a=8|7;
    printf("a=%d\n",a);
    return 0;
}

打印结果: 

  • ^(异或):A^B

如果结果为1,则取0,为0,则取1

代码示例:

#include<stdio.h>
int main()
{
    int a;
    a=15^16;
    printf("a=%d\n",a);
    return 0;
}

打印结果: 

  • ~(取反):A~B

按位取反

代码示例:

#include<stdio.h>
int main()
{
    unsigned int a=1;
    printf("~a=%u\n",~a);
    return 0;
}

打印结果: 

  • <<(左移)

  • >>(右移)

代码示例: 

#include<stdio.h>
int main()
{
    int a,b;
    a=13<<2;
    b=25>>3;
    printf("a=%d,b=%d\n",a,b);
    return 0;
}

打印结果: 

 2、常用变量定义

  •  几种特殊定义变量

  • 宏定义:
  •  别名:typedef

 三、结构体

1.枚举和结构体的区别

 同时与数组不同在结构体中可以有不同类型得数据,而数组中只允许出现相同类型得数据。

 2.结构体定义

 3、结构体使用

  • 第一种用struct直接定义

  •  第二种在结构体后直接定义
#include <stdio.h>

struct student{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在小组
    float score;  //成绩
}stu1,stu2;
      
int main(){
    //给结构体成员赋值
    stu1.name = "Tom";
    stu1.num = 12;
    stu1.age = 18;
    stu1.group = 'A';
    stu1.score = 136.5;
    
    stu2.name = "Lisi";
    stu2.num = 11;
    stu2.age = 11;
    stu2.group = 'B';
    stu2.score = 454.5;

    //读取结构体成员的值
    printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
    printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu2.name, stu2.num, stu2.age, stu2.group, stu2.score);

    return 0;
}

打印结果:

 补充:typedef在结构体的使用


#include <stdio.h>

typedef struct student{
    char *name; 
    int num;  
    int age;  
    char group;  
    float score;  
}temp;

temp stu1,stu2;
      
int main(){      
    stu1.name = "Tom";
    stu1.num = 12;
    stu1.age = 18;
    stu1.group = 'A';
    stu1.score = 136.5;
    
    stu2.name = "Lisi";
    stu2.num = 11;
    stu2.age = 11;
    stu2.group = 'B';
    stu2.score = 454.5;

    //读取结构体成员的值
    printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
    printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu2.name, stu2.num, stu2.age, stu2.group, stu2.score);

    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32是一种嵌入式微控制器,它具有丰富的硬件资源和强大的功能。在其中,STM32的自带进制转换函数是一项非常实用的功能。这些函数可以方便地将数据从一种进制转换成另一种进制,减轻了开发人员的负担。 STM32的自带进制转换函数可以实现10进制、16进制、2进制等进制之间的转换。这些函数包括itoa()、atoi()、htoa()、atoh()、btoa()、atob()等。其中,itoa()函数可以将一个整数类型的数据转换成字符串类型,也可以指定进制;而atoi()函数可以将字符串类型的数据转换成整数类型,同样可以指定进制;htoa()函数可以将16进制的数值转换成字符串类型,同样也可以指定进制;atoh()函数则是将字符串类型的16进制数值转换成整数类型;btoa()函数可以将2进制数值转换成字符串类型,同样也可以指定进制;atob()函数则是将字符串类型的2进制数值转换成整数类型。 除了上述函数,STM32的库函数中还有一些其他的进制转换函数,如printf()和scanf()函数。这些函数可以在不同的数据类型之间进行进制转换,通过格式化字符串参数指定进制。比如,printf()函数可以将数据以指定的进制格式化输出到串口或者其他输出设备上。 在实际开发中,使用STM32的自带进制转换函数可以极大地简化代码编写的工作量,同时也提高了应用程序的可维护性和可扩展性。因为这些函数已经经过测试和优化,所以在使用过程中可以保证其稳定性和可靠性,让开发人员更加专注于应用程序的逻辑实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值