说起进制,大家都能想到二进制、10进制、16进制、8进制等等,但是在互联网应用开发中,却很少用到这些换算。在物联网短指令应用中,却十分常见。 理解字节本质和二进制 无论是互联网应用还是物联网应用,在网络传输层传送的其实都是二进制数据。因为现代通信设备对信号处理都是用的数字电路,数字电路的输入输出只有两种状态,那就是高电平或低电平,也就是对应二进制数据的1和0。按照一定的时序和时钟基准,就可以代表了不同的信息。理解二进制数据的形成对物联网开发的深入是很有必要的。
上图中绿色线代表数据电平,红色线代表用于鉴别二进制每一个数据位的时间基准。 在前面我们已经说到网络传输中是按照字节传输的,而每个字节通常是按照8位二进制组成的,那么上图说明了一个字节的数据在数字电路中电平变化情况,也是在网络传输中各个通信设备间传输的电平变化情况。绿色线是数据线上的电平,可以看到有两个凸起的高电平,高电平代表1,低电平代表0,那么用二进制表示,是不是就是“01010”呢,事实上是不对的。上图的一个字节的二进制值应该是“10011000”,为什么会识别多识别出来几个位呢?原因是还有一个时间间隔的基准参照,就是时钟线上的电平变化。 每次从低电平变化为高电平,再从高电平变化为低电平,这个过程产生的电平波形是个凸起的方波,我们称之为高脉冲(因像脉搏跳动一样而得名,也有用低脉冲的,原理相同)。时钟线上连续不断产生着固定时间间隔和脉冲宽度的高脉冲,而数字电路在每个时钟高脉冲到来的时候,去识别一下数据线上的电平高低,如果是高就代表当前数据为是1,否则为0。就这样每一个时钟高脉冲都去识别一次,将结果依次记录下来,就组成了二进制数据。上图中数据线上的第二个高电平被识别成二进制“11”,就是因为在数据线高电平期间经历了两个时钟高脉冲,所以是两个1,而不是一个1,数据线上的低电平被识别成多个0的原理也是一样的。 一个字节由8个二进制位组成,通常标准是高位在前,最低位序号是0,最高位序号是7,所以上图中时钟高脉冲上面的数字是描述一个字节中的8个位的序号,也就是顺序。传完一个字节紧接着传下一个字节,原理相同。 |