程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-一個字節數據存儲到四個字節裡,高三個字節位裡面會是什麼?

c語言-一個字節數據存儲到四個字節裡,高三個字節位裡面會是什麼?

編輯:編程綜合問答
一個字節數據存儲到四個字節裡,高三個字節位裡面會是什麼?

其實就是這句C語言代碼怎麼解釋:
char c = 128;
printf("%d\n", c); //輸出-128
printf("%d\n", 128); //輸出128

那個,我的想法是這樣的:
Int類型的128的二進制是1000 0000(忽略前面24個0),儲存到char類型裡面之後不應該還是1000 0000嗎?然後用printf輸出一個四字節(第二行代碼),為什麼就變成-128了呢?如果輸出的是一個字節,確實1000 0000代表-128。
但,明明寫的是printf("%d\n", c); 
是不是因為系統只給c變量分配了1個字節內存,所以printf("%d\n", c);  只能讀取內存中的一個字節,而不能按照%d讀取4個字節?

最佳回答:


在回答這個問題前有幾個條件需要明確。
1.計算機內存默認沒使用過的是1也就是都是ff保存的。
2.計算機存儲整數時,是按照它的補碼存儲的。
首先你申請了一個字節C並給他值128.所以此時計算機內C起始的4個字節是按照下面存儲的(假設這塊內存根本沒用過)
0000 0001 1111 1111 1111 1111 1111 1111
當你按照整形去打印的時候,計算機認為是以C為起始地址的一塊4字節內存,並不是你說的只有一個字節,但是計算機認為他是補碼,將上面的補碼還原成原碼就是
0000 0001 0000 0000 0000 0000 0000 0001
再按照整形數打印出來就是-128.

sinat_17679723
u013115078
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved