整數在內存中存儲形式
Ⅰ C語言的基本類型在內存中怎麼儲存的
1、整型數據:所有整數(正負零)在內存中都是以補碼的形式存在。對於一個正整數來說,它的補碼就是它的原碼本身。對於一個負整數來說,它的補碼為原碼取反再加1。
2、字元型數據:把字元的相對應的ASCII碼(整數,映射關系見ASCII碼表)放到存儲碼單元中,而這些ASCII代碼值在計算機中同樣以二進制補碼的形式存放的。
3、實型數據:也叫浮點數,在計算機中也是以二進制的方式存儲,關鍵在於如何將十進制的小數轉化為二進制來表示。
(1)整數在內存中存儲形式擴展閱讀
C語言存儲數據使用注意事項
C語言中(包括C++/Java)實際存儲浮點數都不是這樣直接存儲「整數二進制+小數二進制」就完事的,這只是第一步。轉化二進制以後還要進行處理,實際的存儲標準是IEEE754
遇見一直「乘不凈」的浮點數,最終能取多少位取決於編譯器對應的浮點類型數據的分配位元組,位元組數越多越精確。故double要比float精確不僅僅是整數部分上限更高,小數部分也能取到更低的位數,故而更精確。
盡量避免大的浮點數和小浮點數運算,由於浮點數存儲的特點,常常會使小的浮點數丟失且判斷兩個浮點數或一個浮點數和整數,常量是否相等,使用abs(x-y)<0.000001這種形式。
Ⅱ 關於字元和整數在計算機內存中的存儲格式
字元類型的在內存中存儲形式是以相對應的ascll碼值的二進制存儲。
整數類型在內存中存儲所需的位元組根據系統位數和編譯器等因素決定,如果是存儲有符號數據的話,在內存中存儲的二進制數據可以說是它的補碼形式。正數的反碼、補碼是它自身,也就是存儲自身的二進制形式。負數在內存中的存儲形式是也是它的補碼。負數的補碼是它的反碼(首位符號位不變,其他位取反)+1。總之字元有字元在內存中的存儲,整數也有它相應在內存中的存儲形式。
Ⅲ C語言中整形數據在內存中的儲存形式是什麼
整形數據在計算機中的數據的保存和運算都是以二進制的形式進行的,但不是直接的原碼,而是原碼的補碼,也就是說在計算機中,數據的運算都是以數據的補碼進行的.
整型數據在內存中的存放形式
如果定義了一個整型變數i:
int
i=10;
【0000000000001010】
數值是以補碼表示的:
n
正數的補碼和原碼相同;
n
負數的補碼:將該數的絕對值的二進制形式按位取反再加1。
例如:
求-10的補碼:
10的原碼:
【0000000000001010】
取反:
【1111111111110101】
再加1,得-10的補碼:【1111111111110110】
由此可知,左面的第一位是表示符號的。
整型數據在內存中所佔的位數(如下圖所示):
Ⅳ 數字是如何存儲的
數字的存儲在計算機分為整數和浮點數存儲,整數的話都是以二進制補碼的形式存啟凱儲,正數的補碼是正數原碼本身,負數的補碼是原碼的反碼加1,而浮點數的存儲就更為復雜了,包含符號位、基數位、階碼,以「符號位+基數+階碼」的形式存放(當然這只是個簡單的模型,只是為了說明問題,基數本身是以補碼的形式存放,而階碼就特殊點了,可祥迅以參看http://..com/question/213678614.html)
英文字元都是以ASCII碼的形式存放,這是早期電腦中的數據存儲形式,就是用1B(8位)來存放一個英文字元對應的ASCII碼,最高位為0,但是現在的操作系統中都是Unicode編碼,即用2B來存放一個英文字元,高8位全為0,低8位為對應英文字元的ASCII編碼.而漢字的編碼也差不多,只不過一個漢字固定是用2B來存放的,一個漢字的編碼高8位和低8位的第一個位都為1,漢字的編碼有個區間【按照GB2312標準的漢字范圍:0xB0A1(45217)-0xF7FE(63486))】
圖像和聲音的編碼更為復雜了,因為我們知道圖片和聲音文件有很多種後綴名(圖像:例如.jpg/.png/.bmp等等.聲音:.mp3/.wma/.wav等等)按照不同的後綴名會有不同的編碼方謹旁此式,即使是同一個後綴名也可能有多種編碼方式,所以這個小點很不好回答.要簡單先了解一下的話,你可以先看看圖像中的.bmp文件是怎麼編碼成二進制文件的,這個主要編碼方式是把圖像當成一個點陣,每個點陣上有多位顏色,每一種顏色分別用一個的一定位數來編碼(這個得根據顏色的多少來決定用多少位二進制數來編碼,例如256色,真彩色等等),點陣的位置用一定位數來編碼,對應的點陣位置上存放的就是對應顏色的編碼(呵呵.有點復雜).
聲音的話也跟圖像編碼類似,就指.wav聲音文件來說,先把音軌按時間來劃分,每隔一定的時間采樣一次,隔的時間的倒數就是我們所說的采樣頻率.而我們是對每一個採到的聲音進行編碼,例如按照聲波的振幅進行編碼,不同的振幅對應不同的二進制編碼,如振幅0對應00000000,這只是簡單的說明一下.wav音頻文件的編碼。