1. 程式人生 > >8位資料越界處理

8位資料越界處理

8位有符號數的取值範圍是-128~+127,為什麼呢?
首先我們知道,計算機以補碼的形式儲存的,正數的補碼是原碼不變,負數的補碼是原碼的取反加1。
我們先來看+127,原碼0111 1111對吧,若+128是多少呢,0111 1111 + 1 = 1000 0000 (原碼),然後儲存時,計算機一看是最高位為1,就保持符號位不變,後面7位取反加1,然後呢,進位捨棄,還是1000 0000(-128)。所以對於8位資料來說,+128 實際上變成 - 128。

對於-128我們來看,首先對於負數,計算機處理是保持符號位不變,剩餘位先取絕對值然後取反加1,128(取絕對值)1000 0000 取反(1111 1111),加1 (1000 0000),所以-128的補碼是1000 0000(原碼和補碼一樣的),下面,我們來看一下-129的值,-128的原碼為 1000 0000 減1 等於0111 1111 (原碼計算就沒有那些規矩了,直接計算就行了),然後儲存,計算機一看正數,就直接儲存了+127.

strlen()函式是返回一個字串的長度,遇到’\0’結束。