回覆列表
  • 1 # adylm5334

    0XFFFF如果代表一個unsigned int 資料 那麼它的值就是 4 294 967 295也就是 無符號整型所能表示的最大值。 0XFFFF如果代表一個signed int 資料 那麼它的最左邊的一位是1,即它必定是一 個負數。這個值是-1。0X FFFF如果是一個有符號的數字,因為它的最高位是1,所以這個數是個負數。簡單的 在記憶體中的儲存形式為 1111 1111 1111 1111 1111 1111 1111 1111,這個是補碼。根據規則將上面的數減去二進位制的1,即減去0000 0000 0000 0000 0000 0000 0000 0001,得到 1111 1111 1111 1111 1111 1111 1111 1110,然後按為取反,得到0000 0000 0000 0000 0000 0000 0000 0001,這就是原碼,即數字的二進位制表示方式,這個數字就是-1了。擴充套件資料C語言中0xFFFF的計算規則及注意事項:1、C語言裡的資料在記憶體中的表示,資料會因為讀取的方式不同而導致讀取出來的結果不同。同樣的資料如果按照int和char來讀,結果是不同的,如果按照有符號和無符號來讀,結果也可能不同。2、C語言的資料在記憶體中用二進位制來表示,由於無符號的資料不用騰出最左邊的一位來表示正負, 正是由於多出來這一位,我們知道這相當於二進位制中的把資料左移一位,擴大二倍。所以無符號 的資料能儲存的數值範圍要比有符號數大一倍。 3、雖然C語言把資料使用二進位制在記憶體中表示,但是還有一點:計算機是用補碼來儲存資料的。 即一個數將其轉換成為二進位制之後還要再轉換成補碼,才是最終在記憶體中的樣子。

  • 中秋節和大豐收的關聯?
  • 問:天上的雲彩分幾層?都叫什麼名字?