很多人在读到BSCI OSPF LSA Sequence Number这个章节时,常常会在心中出现一个问号? Cisco的教材是不是又打错字了(Cisco教材编辑校阅相关负责单位请好好反省…真的是错字百出),其实是没错的。OSPF LSA Sequence Number的起始值是0x80000001,结束值是0x7FFFFFFF,或许你可能会感到困惑,怎麽会一开始的数字比结束的数字还要大呢?

事实上,这是因为起始值中开头的8是代表着负数,它的意思是-7FFFFFFF,请参考以下的说明,就会明白了:

在古早时期玩游戏是一种电脑能力的自我修练与提升,怎麽说呢? 如果十几年前很喜欢玩电脑游戏的朋友,一定曾经使用过这种游戏修改工具,像是PCTOOLS、整人专家等,透过这些工具的辅助将游戏中的梦想变为现实,只 要是各种可能的数字上限与主角能力的极限都可以任意调整。

废话不多说,来看看我们要谈的东西。一个位元组(byte)资料可表示的范围从0(0000 0000)到255(1111 1111),那麽负数的话要怎麽表示呢? 在电脑系统中只有0与1,并没有任何的额外符号可以用来表示所谓的正/负数,因此可以使用一种变通的方式,我们利用位元组中最左边的数字来代表正或负,以 0为正,以1为负。

比如说0111 1111转换为十进位的话是127,1111 1111转换为十进位的话则是-127,由此我们知道一个位元组的表示范围可以从-127到127。

以上我们谈的都是所谓的原码表示法,但是在电脑中的资料都是以补数来存放的,只有这样才能减轻CPU的负担。提到了补数,我们就不得不提一下倒数 了。在电脑中是这样规定倒数的:如果是正数,则按照原码表示法的表示方式维持不变,如127仍为0111 1111;而如果为负数,那麽第一个数字为1,其他数字则倒反过来(也就是0变1,1变0),比如说二进位表示法-127(1111 1111),倒数的表示法为1000 0000。

补数也是相同道理,如果是正数,则依照原码表示法不变,如127仍为0111 1111;如果为负数,则是除了第一个数字为1之外,其他数字先取倒数再加1,如-127,先取倒数为1000 0000,然后再加1,则为1000 0001。但1000 0000比较特殊,我们可以用它来表示-128,由此可以补数可表示的范围为-128到127。