因为尝试对神经网络直接输入2进制数字序列,一下子想到这种以小端存储的方式,另外突然想到了大端存储会有一些问题,好吧,因为神经网络本质上是并行的,大端存储跟小端存储的差别并不存在,想多了,遂起探究一下为什么会有这种反直觉的小端存储方式。
为什么会有大小端
这样理解
你算加减乘(没有除,后面解释)的时候是从高位还是低位开始的?
为什么不从高位开始?因为存在着进位,如果从高位开始,算到后面发现有进位,就要回退到高位处理进位
如果从低位开始,可以一下子算出来
早期的计算机是纸带机,纸带上储存的是2进制数据
如果使用小端储存,做加减乘运算时,计算机的写出头可以一直往一个方向移动,而不用回退写出头处理进位问题。
下面图说
例如 3+3 ,转换为正常二进制,也就是大端储存,
就是 0011 + 0011
指针从左边开始
# 0011
# +0011
————————————————————————————————————————————————————————————————————————————
# 0 指针位置1
# 00 指针位置2
# 000 指针位置3,1+1=0,需要进位1,指针回退到2,处理进位,并且检测是否需要再次进位
# 010 指针位置3
# 0100 指针位置4,1+1=0,需要进位1,指针回退到3,处理进位,并且检测是否需要再次进位
# 0110 指针位置4
转换为小端运算,变成了
# 1100
# +1100
————————————————————————————————————————————————————————————————————————————
# 0 指针位置1,需要进位1,
# 01 指针位置2,1+1+1=1,需要进位1
# 011 指针位置3,0+0+1=1
# 0110 指针位置4
减法乘法也是如此,对于除法,嗯,我研究不深,就不bb了,就是这样 :)