|
1 再補(bǔ)充一點(diǎn)補(bǔ)碼的知識(shí),負(fù)數(shù)在計(jì)算機(jī)中會(huì)用補(bǔ)碼來(lái)表示 負(fù)整數(shù)的補(bǔ)碼計(jì)算是將其原碼除符號(hào)位外的所有位
取反后加1,比如-1的補(bǔ)碼為其絕對(duì)值1(0000 0001)->所有位取反(1111 11110) -> 加1(1111 1111)即255
2、接上一點(diǎn),此時(shí)cnt=255 又滿(mǎn)足了for循環(huán)中cnt>-1判定條件,因此它就會(huì)一一直循環(huán)下去無(wú)法退出。
3、然后循環(huán)體內(nèi)(7-cnt) 也會(huì)產(chǎn)生負(fù)數(shù),這樣和你想要的結(jié)果會(huì)完全不同。如在cnt=255時(shí) 7- cnt=-248 補(bǔ)碼
為0x08,即實(shí)際向右循環(huán)移動(dòng)了8位之后變成0x80,外面又取反了一次變成 0x7f。 即P2 = 0x7f
4. 最后出現(xiàn)問(wèn)題不要慌哈 可以借助編譯器仿真調(diào)試設(shè)置斷點(diǎn)、變量調(diào)試查看。都是這么過(guò)來(lái)的。 |
|