目录
一、二进制转换十六进制
二、十六进制转换二进制
三、按位操作:与(&) 和 或(|)
1、按位与(&)操作
2、按位或(|)操作
得出结论:清0用与(&),置1用或(|)
3、与和或的小练习
一、二进制转换十六进制
科普一下:二进制(binary),是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示 。
举例
二进制: 0101 0011
十六进制: 5 3
如上图二进制0101转换到十六进制后为5,为什么是5呢,请看下面分解
这个时候就用到8421法则了,怎么用8421法则呢
0 1 0 1 0 0 1 1
x x x x x x x x
8 4 2 1 8 4 2 1
= = = = = = = =
0 4 0 1 0 0 2 1
0+4+0+1 = 5 0+0+2+1 = 3
注:图中的”x“代表乘法的乘号
由上图计算可得知:
二进制0101转换到十六进制后为5,二进制0011转换到十六进制后为3
额外的知识点:四个二进制的数 = 一位的十六进制的数
8421转换法是一个计算机的术语,可以轻松实现各进制之间的转换。
二、十六进制转换二进制
科普一下:十六进制通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15
举例
十六进制: F 0
二进制: 1111 0000
也是用8421法则进行转换
因为F在十六进制中表示15,那么F转换到二进制后,也必须是15(因为无论进制怎么转换,F=15数值不能改变)那么用8421法则进行凑数,怎么凑数呢,如下:
8 x 1 = 8 8 x 0 = 0
4 x 1 = 4 4 x 0 = 0
2 x 1 = 2 2 x 0 = 0
1 x 1 = 1 1 x 0 = 0
8+4+2+1 = 15 0+0+0+0 = 0
由上图可知:用8421法则进行凑数时,在二进制的四个位置均为1时,算出的结果正好是15
所以十六进制的F,转换为二进制时,是1111
同理十六进制的0,转换为二进制时时,是0000
三、按位操作:与(&) 和 或(|)
1、按位与(&)操作
运算规则:1 & 1 = 1 ,0 & 0 =0 ,1 & 0 = 0
1&上任何数,都不会改变它原来的值,0&上任何数,都是0
0 1 0 1 0 0 1 1
& & & & & & & &
1 1 1 1 0 0 0 0
= = = = = = = =
0 1 0 1 0 0 0 0
总结:两边同时为1时,才得1
2、按位或(|)操作
运算规则:1 | 1 = 1 ,0 | 0 =0 ,1 | 0 = 1
0 | 上任何数,都不会改变它原来的值,1 | 上任何数,都是1
0 1 0 1 0 0 0 0
| | | | | | | |
0 0 0 0 0 0 0 1
= = = = = = = =
0 1 0 1 0 0 0 1
总结:两边有一个为1时,就得1
得出结论:清0用与(&),置1用或(|)
配置寄存器推荐用按位操作,清零的时候,对应的需要清零的位与上0,不需要清零的位与上1
置1的时候,需要置1的位置或1,不需要置1的位置或0
3、与和或的小练习
要实现的目标:要把TMOD:0101 0011,转换成高位置不变,低位置最后 的两个位置变01
TMOD & = 0xF0;
TMOD | = 0x01;
第一步转换
TMOD为: 0101 0011
F0转换为二进制为: 1111 0000
TMOD & F0的结果为: 0101 0000
第二步转换
由上一步得知TMOD为: 0101 0000
01转换为二进制为: 0000 0001
TMOD | 01的结果为: 0101 0001
TMOD经过两步的转换后,最后得出的结果是:0101 0001 实现了高位置不变,低位置最后 的两个位置变01