对一个2进制数进行左移一位相当于乘以2的理解:一个2进制数我们可以把它分解成以2为底的幂(即2进制数的位权)与所在位权上的基数的积作为加数,经过累计得出的和.举个例子,2进制数100001就可以分解为,1*(2^5)+0*(2^4)+ 0*(2^3)+ 0*(2^2)+ 0*(2^1)+1*(2^0);接下来,我们将这个数向左移动一位后,出现两种情况,空出的位置可以用0或者1填补,即1000010和1000011两种情况.我们先来讨论100001这个数左移一位最右边的空位使用0填补时,形成的新数1000010这个情况,我们将新数1000010也分解一下得到,1*(2^6)+0*(2^5)+ 0*(2^4)+ 0*(2^2)+ 0*(2^2)+1*(2^1)+0*(2^0);我们将新数中每个加数都提取出一个2后,得到,2*{1*(2^5)+0*(2^4)+ 0*(2^3)+ 0*(2^2)+ 0*(2^1)+1*(2^0)+0*(2^-1)};这恰巧是2倍的原来的二进制数100001(新数的每个加数提取2后得到的因式的最后一项0*(2^-1)就是0,因此可以消掉或者直接忽略);我们对比一下原数100001和新数1000010的分解式:100001:1*(2^5)+0*(2^4)+ 0*(2^3)+ 0*(2^2)+ 0*(2^1)+1*(2^0);1000010:1*(2^6)+0*(2^5)+ 0*(2^4)+ 0*(2^2)+ 0*(2^2)+1*(2^1)+0*(2^0);实际上,将原数100001的分解式中的每个加数都乘以2再在最右边补上0就可以得到新数了.将原数乘2也就是将原数的每个加数中的位权都提高了一位,原数最高的权位是2^5,乘以2后变成了2^6,提高了一位;因此,将原数乘以2后,最右边补0,就是新数,最右边补1,就是新数加1.综上所述,将一个数左移一位,就是相当于将这个数乘以2或者乘以2再加1.