本帖最后由 梦幻泡影 于 2018-7-13 19:52 编辑
对于问题1:
0x23是十六进制,你把它转换成二进制就是 0010 0011 了。至于怎么转换,告诉你个诀窍,你把16进制的两个数分开看,例如0x23,看成是 2 和 3。对于任何数都可以用这组数表示: 8 4 2 1(2的3次方 2的2次方 2的1次方 2的0次方)
,例如这里的 2,可以看成 8 4 2 1
0 0 1 0
0*8 + 0*4 + 1*2 + 0*1 = 2,看这个式子就知道,哪一个位(指的是 8 4 2 1)被置为1,我们就把它加起来,例如 3,
可以看成 8 4 2 1
0 0 1 1
0*8 + 0*4 + 1*2 + 1*1 = 3. 来个偏一点的数 0 和 F, 8 4 2 1 8 4 2 1
0 0 0 0 1 1 1 1
0*8 + 0*4 + 0*2 + 0*1 = 0, 1*8 + 1*4 + 1*2 + 1*1 = 15,十进制的15表示成十六进制就是F。用这种方法,你就
可以口算出一个十六进制转换成二进制是什么样的了,举个栗子:0xAB, 分别对应两组 8 4 2 1,就是 1010 1011,
十六进制的A等于十进制的10,十六进制的B等于十进制的11. 要是还不理解我就没辙了。
对于问题二:
最左边那个是最高位,也就是bit7,文档说的很清楚了,bit7 = 1 表示写操作,bit7 = 0 表示读操作,所以,对方是根据
这个bit7 来判断你是想读数据还是想写数据,你要是想往0x23(0010 0011)这个地址写入数据,就要把0x23的bit7置1,
变成 1010 0011,。如果你是想从0x23地址读取数据,那就把它的bit7置0,变成 0010 0011,你别看它的值没有变,实际
上对方收到一个字节后,首先是要判断bit7的值的。举个例子,假如你发送的一个字节是0xD3(1101 0011),那么,对
方先是识别到bit7(最左边那个)的值是1,然后再识别bit6~bit0的值是 101 0011(对于 101 0011,你可以把它看成
是 0101 0011),换算成十六进制的地址就是 0x53,它就会以为你要往0x53写数据了。
对于问题3:
你是不是想表达bit6-0 ?如果是的话,它的意思就是bit6到bit0 。明白?
例如0x23, 用bit表示分别是 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
对应二进制就是: 0 0 1 0 0 0 1 1
|