旅行箱上的密码锁见过吧,就是一般由三个轮子组成,每个轮子上都有十个数(0-9),你必须跳到你设的密码才能打开,比如123,怎么做呢?第一个轮子调到1,第二个调到2,第三个调到3,ok,打开了。
这就是一种计数方法。
引申一下,想想,那个密码有八位,但是每个轮子只有2个数,0,1,同样表示一个数,我们可以用这个组合(0,1)表示。
这样我们只是计数的话,有它们就足够了
但是现在有了负数的概念了,再怎么计数呢?
一般我们把全是0的组合表示为0,(00000000),表示一呢?,右边第一个轮子滚个1(00000001),二呢?(00000010),(进位的概念知道吧)一直下去。。。。到了127(01111111),再走(+1),注意了,又有进位,怎么办?此时就要停下来,
由于我们是为了同时表示正数和负数,而8位二进制数只能表示256个数,很明显,正数和负数应该一样多,所以就有个规定:
最高位为1,则表示为负数,最高位为0就为正数,这样正数和负数就一样多了(其实负数多一个,0占了正数一个名额)
现在来看看负数的表示
+1是右一位滚1,-1呢?,大家都知道 -1=0-1,知道0的表示了(00000000)同样也右一位滚1,这时就要知道借位的概念了
最低位,减1,就像高位借,于是-1出来了(11111111),-2(11111110)(-2=-1-1)。。。。这样-127=10000001,
-128=10000000,-129再减1=01111111,额,不对怎么会等于+127,!
所以8位二进制(char)能表示(-128-127)
同理int(16位)表示(-65536-65535)
其实记住一个数加它的相反数是要等于0的(最基本的吧)
所以见到一个正数,知道它的二进制,要表示它的相反数就用0去减就行了,记住:负数的最该位为1
1+(-1)=0
00000001+11111111=00000000!