日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言存储大范围整形,C语言整形数值范围问题

發布時間:2024/7/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言存储大范围整形,C语言整形数值范围问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有符號二進制數的表示是這樣的:如果計算機的字長為n位,n位二進制數的最高位為符號位。其余n-1位為數值位,采用補碼表示法時,可表示的數X的范圍是 -2的(n-1)次冪 <= X <= 2的(n-1)次冪-1。如果字長是16位,補碼表示的范圍就是 -2的15次冪 <= X <= 2的15次冪-1,也即可表示的范圍是-32768到32767。

計算機中二進制表示有原碼、反碼、補碼表示。

原碼是指將最高位作為符號位(0表示正,1表示負),其它數字位代表數值本身的絕對值的數字表示方式。

反碼表示規則為:如果是正數,則表示方法和原碼一樣;如果是負數,則保留符號位1,然后將這個數字的原碼按照每位取反,則得到這個數字的反碼表示形式。

補碼是計算機表示數據的一般方式,其規則為:如果是正數,則表示方法和原碼一樣;如果是負數,則將數字的反碼加上1(相當于將原碼數值位取反然后在最低位加1)。

所以正數的原碼、反碼、補碼是相同的,32767二進制原碼表示是0 111 1111 1111 1111,所以反碼、補碼表示都是0 111 1111 1111 1111;

由原碼定義可知十進制負數-32768在16位計算機中是表示不出來的,1111 1111 1111 1111表示的是-32767,但我們知道32768的原碼是1 000 0000 0000 0000,其反碼是0 111 1111 1111 1111,補碼是1 000 0000 0000 0000,由補碼定義可知恰好表示-32768。

兩個有符號數進行加減運算時,如果運算結果超過可表示的有符號數的范圍時,就會發生溢出,使計算機結果出錯。很顯然,溢出只能出現在兩個同號數相加或兩個異號數相減的情況。所以兩正數相加,結果超出了范圍,形式上變成了負數;兩負數相加,結果超出了范圍,形式上變成了正數(減法其實就是兩個負數相加)。

-1用補碼表示是1111 1111 1111 1111,即1000 0000 0000 0000 + 1111 1111 1111 1111時最高位有進位輸出時,發生了溢出,形成了0111 1111 1111 1111,這就是有符號十進制數32767的二進制表示法,結果當然是32767了。

全部

總結

以上是生活随笔為你收集整理的c语言存储大范围整形,C语言整形数值范围问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。