帶符號 數值基本類型存儲

一. 基本原則spa

在計算機系統中,數值一概用補碼來存儲,使用補碼的主要緣由是,能夠將符號位和其它位統一處理,而且減法也可按加法來處理3d

1. 首位(最高位)是符號位,0表示正數,1表示負數,後邊的剩餘位數用來存儲數值;blog

2. 正數的補碼與源碼相同(正數源碼,反碼,補碼都是相同的);內存

3. 負數的補碼是反碼加1(反碼是對源碼的數值位逐位取反,首位符號位除外);源碼

4. 兩個用補碼錶示的數相加時,若是最高位(符號位)有進位,則進位被捨棄。im

 

二. 下邊以int爲例,看下補碼究竟是什麼邏輯d3

1. int number = -1; 負數,首位符號位爲1db

即int number = -1;在內存中存儲爲 1111 1111 1111 1111 1111 1111 1111 1111img

 

2. 兩個數相加計算機

int number1 = -1;

int number2 = 2;

int sum = number1 + number2; //sum = 1

number1和number2逐位相加,最高位有進位1,按照基本原則4(兩個補碼相加,符號位有進位,將進位直接扔掉)獲得sum在內存中爲0000 0000 0000 0000 0000 0000 0000 0001,轉爲十進制即爲1

 

3. 兩個數相減(實質是第一個數加上第二個數對應的負數)

int num1 = 5;

int num2 = 6;

int sub = num1 + (-num2); //sub = -1

 

獲得sub在內存中爲1111 1111 1111 1111 1111 1111 1111 1111,首位爲1,說明sub是負數,根據基本規則3反推,減1而後數值位逐位取反便可獲得源碼

源碼爲 1000 0000 0000 0000 0000 0000 0000 0001,轉爲十進制爲-1

相關文章
相關標籤/搜索