通常,在单片机里面对寄存器或者引脚进行赋值时使用十六进制的数,之所以用十六进制,是因为二进制数太长了,而十进制数表示没有十六进制数清晰。
起由
今天在玩数码管时候遇到了0xff
,知道是16进制,输入到windows自带计算器里面一直提示无效输入(😂我那时机(zhi)智(zhang)的想输入0xff),上网查询后才发现我如此的机(zhi)智(zhang),哈哈
转换
这个其实挺简单的,0x表示这是十六进制,十六进制每位数值由 0-f表示。
16进制变二进制再变十进制:
0xff = 1111 1111 = 2^8 - 1 = 255
所以0xff
对应 二进制为 11111111B
;
10进制与16进制间关系
1 — 0X1 2 — 0X2 3 — 0X3 4 — 0X4
5 — 0X5 6 — 0X6 7 — 0X7 8 — 0X8
9 — 0X9 10 — 0Xa 11 — 0xb 12 — 0xc
13 — 0xd 14 — 0xe 15 — 0xf
16进制变十进制:f表示15。第n位的权值为16的n次方,由右到左从0位起:
0xff = 15*16^1 + 15*16^0 = 255
十进制就是255
计算
一般情况下,我们会使用计算器来计算。那怎么计算呢,直接输入 0xff 会提示无效输入呀。
下面以 windows 10 自带计算器来举例:
打开计算器 调成程序员
模式,其中:
- HEX 16进制
- DEC 10进制
- OCT 8进制
- BIN 2进制
【找不到计算器的请按下 Ctrl
+ R
,输入 calc
,然后 Enter
】
在这篇文章开头就说了,0x表示这是十六进制,所以我们只需要输入后面的即可,这里以0xff 的为例:
同理,我们现在来用计算器计算0x07
,去除前面0x
,剩余07
,输入转换为二进制0111
。
那么接下来就将 二进制 01101111
转换为16进制:去除前的0,在计算器中点击 BIN
,输入1101111
,转换为十六进制 6F
,再加上0x
,表示这是16进制,最终得出 0x6F
[collapse title=”Test”]
[/collapse]
发表回复