通常,在单片机里面对寄存器或者引脚进行赋值时使用十六进制的数,之所以用十六进制,是因为二进制数太长了,而十进制数表示没有十六进制数清晰。
起由
今天在玩数码管时候遇到了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 的为例:
![[记录]十六进制的转换 1 2017041417222867](http://www.morfans.cn/app/uploads/2017/04/2017041417222867.png)
同理,我们现在来用计算器计算0x07 ,去除前面0x,剩余07,输入转换为二进制0111。
那么接下来就将 二进制 01101111转换为16进制:去除前的0,在计算器中点击 BIN,输入1101111,转换为十六进制 6F,再加上0x,表示这是16进制,最终得出 0x6F
[collapse title=”Test”]
[/collapse]

发表回复