整數是如何儲存在計算機內部的

2021-07-05 20:57:06 字數 1513 閱讀 8271

整數分為正整數和負整數,因此在存入到計算機時需要考慮到正號負號,。接下來就討論整數儲存方式。

1. 無符號表示法

假設計算機的記憶體分配了n個位來讓我們儲存乙個整數,把這n個位稱為乙個儲存單元,那麼使用無符號表示法可以儲存的整數的範圍是0到(2^n-1)

步驟分為以下幾步:

首先將整數變為二進位制數

如果二進位制位數不足n位,則在二進位制整數的左邊用0補齊,如果二進位制位數超過n位,那麼這個整數就無法儲存,會導致溢位情況。

例: 把整數7存入8位的記憶體單元中

首先將十進位制7用二進位制111表示,因為儲存在8位的儲存單元中,所以用0補齊成00000111,然後將00000111存入這個記憶體單元中。

2.符號加絕對值表示法

用符號加絕對值表示法需要用乙個二進位制位表示正負(0表示正數,1表示負數),因此用此方法儲存的範圍是-(2^(n-1)-1)到+(2^(n-1)-1) , 注意此方法中有兩個0,乙個+0和乙個-0。

例: 用此方法把整數7存入8位的記憶體單元中  

步驟:首先把十進位制7用 二進位制111表示,用0補齊7位(需要留最左邊一位表示符號), 變成7位的二進位制0000111,然後看是正數還是負數,因為7是正數所以在最左邊加0,變成8位的二進位制資料00000111並存入進這個記憶體單元 。 

例: 用此方法把整數-7存入8位的記憶體單元中  

步驟:首先把十進位制7用 二進位制111表示,用0補齊7位, 變成7位的二進位制0000111,然後看是正數還是負數,因為-7是負數所以在最左邊加1,變成8位的二進位制資料10000111並存入進這個記憶體單元 。

3.二進位制補碼表示法

幾乎所有的計算機都使用此方法來儲存位於n位儲存單元的中的有符號整數,首先需要了解什麼是反碼和補碼。

反碼反碼運算可以用到任何乙個正整數和負整數,方法為把乙個二進位制數的0位變成1位,把1位變成0位。

例;取00000111的反碼,進行第一次反碼運算後就變成了11111000,如果再次進行反碼運算就變成了原來的00000111。

補碼補碼運算分為兩步:首先從右邊複製位,直到有1被複製,第二步反轉剩下幾位。

例:求00110100的補碼,進行第一次補碼運算變成11001100,同樣的如果進行二次補碼運算就變成原來的00110100

還有另外一種求補碼的方法是先進行反碼運算然後加1。

用此方法儲存的範圍是-2^(n-1)到+(2^(n-1)-1),此方法中只有乙個0,步驟先將整數變成n位的二進位制數,然後如果是正數或0,直接原樣儲存,如果是負數,取其補碼進行儲存

例: 用此方法把整數7存入8位的記憶體單元中  

步驟:首先把十進位制7轉變成8位的二進位制0000111,因為7是正數所以直接儲存進這個記憶體單元。

例: 用此方法把整數-7存入8位的記憶體單元中  

步驟:首先把十進位制7轉變成8位的二進位制0000111,因為-7是負數所以取其反碼1111001並儲存進這個記憶體單元。

還原二進位制數同樣按照此方法

例:將1111001還原成十進位制數,首先看第一位是1,所以是負數,需要取補碼變成0000111然後轉換成十進位制7,然後在其前加-號,也就是-7.

計算機內部數字的儲存 擴充套件

在對精度要求很高的系統中,或要對小數的運算結果進行比較時,需要特別謹慎 js中的小數運算是精確的嗎?不一定js中的整數運算是精確的嗎?不一定js中表示的整數是連續的嗎?不是,當 js 的數字很大的時候,不再連續 js中表示的最大數字是多少?最大連續整數 從1開始數到這個數字一直都是連續的,並且到下乙...

計算機內部浮點型資料的儲存

c c 浮點數在記憶體中的儲存方式 任何資料在記憶體中都是以二進位制的形式儲存的,例如乙個short型資料1156,其二進位制表示形式為00000100 10000100。則在intel cpu架構的系統中,存放方式為 10000100 低位址單元 00000100 高位址單元 因為intel cp...

C 獲取計算機內部資訊

computerinfohelper.cs 計算機資訊助手類 public class computerinfohelper catch exception e managementbaseobjectpropertyname.cs namespace wen.helpers.common.comp...