[英]Representation of negative numbers in binary
我正在研究 C 中的不同數據類型。在我的書中,有符號的 char數據類型是1 byte(8 bits) 。 現在,寫的是可以存儲在signed char數據類型中的ASCII碼范圍是從-128到127 。
有人寫道,負數存儲為其二進制的2 的補碼。
我無法理解如何在8 位內存儲-128的2 的補碼形式?
首先,我們需要9 位來編寫+128的有符號二進制表示,即010000000 。現在,如果我們采用它的2 的補碼形式,我們得到110000000 ,它也是9 位長。 那么我們如何能夠將 -128 存儲在8 位有符號字符中呢?
您可以將 -128 存儲為 1000 0000。
第一個 1 表示您使用的是負數,然后,根據我的學習方式,您將 0 視為 1,反之亦然,最后加 1。這意味着對於您的情況,您將執行以下操作步驟(當第一個數字是 1 時):
重要的是要考慮到所有負數都被計算為“倒數”:
這意味着您有 128 個可能的值,但由於您不必包括小數 0(因為它表示為 0000 0000),您的負范圍是 [-1, -128],而另一方面,范圍是[0, 127]。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.