嵌入式C学习1


一、进制与进制转换

二进制0B
十六进制0X
十进制照常写
在这里插入图片描述

二进制转十六进制

一位十六进制数等于4位二进制数,通过8421码来计算:
若二进制数为11010101
在这里插入图片描述
若从右往左数不够4位一组,空几位就补几个0
如101101,补零则为00101101,再进行8421的十六进制转换

二、位运算

一、位与 &

1、与运算中,a &= b,a与b按位“与”运算,结果赋值给a,即a = a & b。

2、1与无变化,与0与变成0,只有1&1才等于1,其余1&0、0&1、0&0都为0(也就是说可以这么操作:让一个变量的值变成0的话,使用 &上0 例如 i&=0。一般用在复位,即清零)

二、位或 |

1、或运算中,a |= b,a和b 按位”或“运算,结果赋值给a,即a = a | b

2、与1或变成1,与0或无变化,只有0&0才等于0,其余1&0、0&1、1&1都为1(|= 一般用在置位,即置1,1的位置1,0的位保持不变)

三、位异或 ^

(1) 0异或任何数=任何数

例如:0^0=0;0^1=1

(2) 1异或任何数=任何数取反

例如: 1^0=1,1^1=0

(3) 任何数异或自己=把自己置0

四、位取反 ~

1、位取反的计算结论是:~n = -(n+1)
例如:~2 = -(2+1),即~2 = -3

2、在二进制中就是每一位取反,0变1,1变0。

五、左移和右移 << >>

1、位运算在操作寄存器的时候,若想改变第n位,即1<<n,进制中左移n位

2、运用:若使寄存器的n位为1 ,将 1<<N位 再 | 这个数,也就是对这个数置1。若使寄存器的n位为0 只要将 1<<N位 ,取反 再 & 上这个数。

总结

简单实例:

#include <stdio.h>

int main()
{
	int num = 0x6f8;//二进制为:0110 1111 1010
	num |= (1 << 1);//或等于1后左移1位,即1 置 1,结果:0110 1111 1010
	num &= ~(1 << 7);//与等于1后左移7位,然后取反,结果:0110 0111 1010
	num ^= (7 << 2);//使2到4位,用位异或等于1取反。111对应为7,则7左移2位,结果:0110 0110 0110
	printf("结果为:%x\n",num);
	return 0;
}

输出结果为:666

三、结构体

定义结构体变量可在之后的结构体参数值进行设置

枚举和结构体的区别
枚举是在一个数据类型中只选择一部分需要的数据。结构体是把多个不同类型的数据集合在一个类型之中。

结构体结构:

struct name { #name是该结构体名字
int a;       #{}内是结构体成员,成员可以是基本数据类型,也可是数组、指针、枚举等

char b;
float c;
}x; #定义的变量

使用

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值