嵌入式C学习笔记1

进制转换

二进制0B
十六进制0x
例: 十进制15 0B1111 0XOF
在这里插入图片描述

二进制转十六进制

一位十六进制数等于4位二进制数,通过8421码来计算
在这里插入图片描述

结构体

结构体是把多个不同类型的数据集合在一个类型之中

数组:相同数据类型的集合
结构体:不同数据类型的集合
结构体的定义方式一:

struct name{
int a;
char b;
float c;
}x;

在这里插入图片描述
使用结构体的步骤:

//1、定义结构体
struct name{
int a;
char b;
float c;
}x;

//2、写入数据
x.a=65500;
x.b=255;
x.c=0x30;

//3、数据调用
if(x.a>1){
z=x.b;
}

结构体的定义方式二(typedef函数定义数据类型):
在这里插入图片描述

结构体成员变量赋值

结构体名.成员变量名 =赋值

struct student{
char name;
int number;
float score;
}x;

//赋值
student.name='张三';
student.number=5420;
student.score=60.0;

位运算

与其他运算符不同,C语言中位运算,顾名思义,是以数值的二进制位为单位进行操作的,包含<<(左移)、>>(右移)、~(按位取反)、&(按位与)、|(按位或)、^(按位异或) 共六种运算符
在这里插入图片描述

移位运算

<<和>>运算符,通过箭头方向可以很好的辨别,分别是C语言位运算符中的左移运算符和右移运算符,如表达式13<<2
它的运算过程为:13的用二进制(四个字节,不考虑符号)表示为,0000 0000 0000 0000 0000 0000 0000 1101
那么向左移两位,右侧补0
则变为0000 0000 0000 0000 0000 0000 0011 0100 换成十进制即变为52

同理,如表达式25>>3,表示25的二进制位向右移三位,由
0000 0000 0000 0000 0000 0000 0001 1001
变为0000 0000 0000 0000 0000 0000 0000 0011 即十进制3

程序验证:

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

运算结果:

a=52,b=3

按位运算符

&按位或运算符

按位与运算符&,有点和前面学过的逻辑与(&&)运算符类似,只有一个&,都是同为1则为1。不同的是按位相互运算。如3&5,运算过程如下:

3 0000 0000  0000 0000  0000 0000  0000 0011
5 0000 0000  0000 0000  0000 0000  0000 0101
& ------------------------------------------
  0000 0000  0000 0000  0000 0000  0000 0001

可以看到3&5的结果即十进制1

|按位或运算符

|按位或运算符,同样,它也与我们前面学过的逻辑或运算符类似,只有一个竖线表示,作用位,两个对应的二进制位有一个为1结果即为1。如8|7的运算过程可以如下表示:

8 0000 0000  0000 0000  0000 0000  0000 1000
7 0000 0000  0000 0000  0000 0000  0000 0111
& ------------------------------------------
  0000 0000  0000 0000  0000 0000  0000 1111

可以看到最终的二进制结果换算成十进制即为15

^按位异或运算符

^表示按位异或运算符,顾名思义,相异,即不同则为1,反之为0

例如15和16进行异或运算,运算过程如下:

15 0000 0000  0000 0000  0000 0000  0000 1111
16 0000 0000  0000 0000  0000 0000  0001 0000
^ ------------------------------------------
   0000 0000  0000 0000  0000 0000  0001 1111

可以看到,经过按位异或运算后,其结果变成十进制应为31

~取反运算符

~取反运算符,是对数值的二进制位进行取反,是第一个单目运算符,因为只有一个运算对象,运算过程是即0变为1,1变为0

~1=0
~0=1
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值