符號位:最高位為符號位,正數該位為0,負數該位為1;
任何數值在記憶體中都是以補碼的形式儲存的。
1> -10的二進位制形式 :1000 0000 0000 0000 0000 0000 0000 1010 //原
2> 除符號位取反 :1111 1111 1111 1111 1111 1111 1111 0101 //反
3> 對取反後的結果+1 :1111 1111 1111 1111 1111 1111 1111 0110 //補
記憶體中的i是0xffffffff,
(1)轉化為二進位制 1111 1111 1111 1111 1111 1111 1111 1111
(2)發現是負數
(3)減一 1111 1111 1111 1111 1111 1111 1111 1110
(4)除符號位取反 1000 0000 0000 0000 0000 0000 0000 0001 ; 真值為-1
記憶體中的j是0x80000000,(最小的乙個負值,暫時還不能理解,因為借了一位才能完成這換算,需33位,不知是不是因為cpu中的計算單元有33位以上暫存器。)
(1)轉化為2進製, 1000 0000 0000 0000 0000 0000 0000 0000
(2)發現是負數
(3)減一 1 0111 1111 1111 1111 1111 1111 1111 1111
(4)除符號位取反1 1000 0000 0000 0000 0000 0000 0000 0000 ;真值為-231= -2147483648
C語言基礎 變數與記憶體
在函式定義的變數都是區域性變數,區域性變數是存放在棧中的 1 變數的儲存細節 1 區域性變數是存在棧中,先分配位元組位址大的然後分配位元組位址小的,所有先定義的變數的位址大,後定義變數位址小 2 變數的位址是所占用儲存空間中,位元組位址最小的那個位址編號 2 字元 char c a 1 查ascii...
C語言變數型別與記憶體
摘錄 c語言有豐富的資料型別和運算子,因此計算能力非常強大,計算過程中使用的值一般用變數來儲存。變數也是有分型別的,不同型別的變數有不同的儲存型別 不同的生命週期 不同的作用域,c語言也提供了一些關鍵字來設定變數的屬性 比如設定儲存型別 生命週期 c語言根據變數作用域的不同,將變數分為區域性變數和全...
C語言 暫存器變數與記憶體變數
暫存器變數是什麼?及它的儲存種類有哪些?靜態變數 自動變數與暫存器變數的儲存 前兩天看師兄給的c語言的一本小冊子,看到 記憶體變數或暫存器變數是指程序執行過程中的變數是在記憶體中還是在暫存器中的變數。以前學的時候從來沒有注意過,記憶體變數和暫存器變數指的是什麼呢?這裡和語言中宣告的全域性變數 區域性...