實型數在記憶體裡儲存的2進製碼

2021-05-28 17:26:17 字數 1830 閱讀 6488

/*

*/# include

int main()

else

if (x<=

1.0)

x *=

2.0; }

}else

x /=

2.0; }

}x -=

1.0;        

//這樣的話系統預設有乙個1,因此只需要儲存後面的0.25(1就不需要儲存了),0.25用二進位制表示是0.01,再去掉(0.)就成為01。

for (i=

9; i<

32; ++i)

else }

if(e>

0)            

//如果指數為0,則用01111 1111表示(即10進製的127,在此基礎上加或減),比如1用1000 0000表示,-1用0111 1110表示。依此類推。

else

for (i=

8; i>

1; --i)

printf(

"s*** ***x xmmm mmmm mmmm mmmm mmmm mmmm\n

");        

//s表示符號位,x表示階數,m表示尾數

for (i=

0; i<

32; ++i)

} printf(

"\n");

return0;

} /*在vc++6.0中的輸出結果為:

————————————

輸入浮點數:

2.0s*** ***x xmmm mmmm mmmm mmmm mmmm mmmm

0100 0000 0000 0000 0000 0000 0000 0000

press any key to continue

輸入浮點數:

-2.0

s*** ***x xmmm mmmm mmmm mmmm mmmm mmmm

1100 0000 0000 0000 0000 0000 0000 0000

press any key to continue

輸入浮點數:

1s*** ***x xmmm mmmm mmmm mmmm mmmm mmmm

0011 1111 1000 0000 0000 0000 0000 0000

press any key to continue

輸入浮點數:

0.75

s*** ***x xmmm mmmm mmmm mmmm mmmm mmmm

0011 1111 0100 0000 0000 0000 0000 0000

press any key to continue

輸入浮點數:

2.5s*** ***x xmmm mmmm mmmm mmmm mmmm mmmm

0100 0000 0010 0000 0000 0000 0000 0000

press any key to continue

輸入浮點數:

0.1s*** ***x xmmm mmmm mmmm mmmm mmmm mmmm

0011 1101 1100 1100 1100 1100 1100 1101

press any key to continue

輸入浮點數:

0s*** ***x xmmm mmmm mmmm mmmm mmmm mmmm

0000 0000 -1000 0000 0000 0000 0000 0000

press any key to continue

————————————

*/

資料在記憶體中的儲存

身為乙個天天處理資料的人,不得不說資料在記憶體中的儲存是必須要知道的問題。首先,資料在記憶體中的儲存涉及到作用域,儲存位置等方面的問題。根據資料的作用域,可將資料劃分為區域性變數和全域性變數 區域性變數的作用域為從定義開始到函式執行結束 全域性變數的作用域從程式開始到程式結束。計算機的記憶體分配可以...

變數在記憶體中的儲存

c 中變數在記憶體中的儲存 一 記憶體大致可以分為三部分 區 堆疊區 靜態資料段。c和c 中有全域性變數,靜態變數以及區域性變數等幾類。全域性變數和靜態變數是在編譯的時候就已經分配好在資料段,也就是說在執行main函式之前就已經分配好了位址,如果定義的時候已經初始化,那麼就存放初始化的值,如果沒有初...

資料在記憶體中的儲存

大端,把乙個數字高位位元組序的內容儲存到低位址,低位位元組序內容儲存到高位址處 小端,把乙個數字高位位元組序的內容儲存到高位址,低位位元組序內容儲存到低位址處 判斷乙個機器是大端還是小端?指標判斷 int checksys 聯合體 共用體 union un int main 這裡首先需要知道的是,例...