電腦儲存形式與進位轉換

來源:互聯網
上載者:User

標籤:電腦儲存形式   進位轉換   

因為電腦能夠識別二進位序列,所以電腦會以二進位的形式儲存一個數 。對於一個正數,以原碼的形式儲存。對於負數,以補碼的形式儲存。


正數的原碼,反碼,補碼相同:

例:1

原碼:00000000 00000000 00000000 00000001

反碼:00000000 00000000 00000000 00000001

補碼:00000000 00000000 00000000 00000001


負數:負數以補碼的形式儲存(最高位是符號位,1表示負,0表示正)

例:-1

原碼:10000000 00000000 00000000 00000001

反碼:11111111 11111111 11111111 11111110(符號位不變,其餘位按位取反)

補碼:11111111 11111111 11111111 11111111(原碼取反再加一)


大端小端:因為電腦儲存的最小單位是位元組,而一個位元組是8個bit位,所以我們將整型4個位元組的1表示為:00 00 00 01

例:1 

大端形式:00 00 00 01 

小端形式:01 00 00 00

通常我們在書寫時採用大端形式,而電腦在儲存時採用小端儲存,我們可以來驗證:

union B{                 int a;                 char b;};int main(){                 union B A;                A.a = 1;                printf( "%c\n",A.b);                system( "pause");                return 0;}

按照小端儲存的形式,輸出的結果應該是ASCII碼為1的值。


二進位與十進位轉換:

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7E/79/wKioL1cB-pKjFrThAABYDh-Ui3U144.png" title="無標題.png" alt="wKioL1cB-pKjFrThAABYDh-Ui3U144.png" />


650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" /> 

>>右移:二進位向右移位,正數的話空出來的補0;

例:7>>2=1(注意不能寫成7<<-2,這兒是錯誤的形式)

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00000001

<<左移:空出來的位補0

例:4<<1=8;

00000000 00000000 00000000 00000100

00000000 00000000 00000000 00001000


算術移位和邏輯移位:

只有再對於負數右移時才考慮的一種情況:因為負數的最高位是符號位,所以當向右移時,空出來的位是補0還是補1.

算術移位:空出來的位補1.

邏輯移位:空出的位補0.

具體是算術移位還是邏輯移位,取決於電腦平台,所以當負數右移時其程式不具有移植性。


按位與:針對二進位的每一位進行的運算,同為1才為1,否則為0;

例7&5=5

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00000101

00000000 00000000 00000000 00000101


按位或:針對二進位的每一位進行的運算,至少有一個位為1才為1,否則為0;

例:8|4=12

00000000 00000000 00000000 00001000

00000000 00000000 00000000 00000100

00000000 00000000 00000000 00001100


異或:針對二進位的每一位進行的運算,相同為0,不同為1;

例:7^4=3

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00000100

00000000 00000000 00000000 00000011


取反:針對二進位的每一位進行的運算,1變0,0變1;

00000000 00000000 00011000 00000011

11111111 11111111 11100111 11111100





本文出自 “11132019” 部落格,請務必保留此出處http://11142019.blog.51cto.com/11132019/1760091

電腦儲存形式與進位轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.