回覆列表
  • 1 # 使用者1465424935672

    在matlab中有這麼兩個函式

    hex2num(str),將16進位制字串str(預設雙精度)轉換成一個數(如果加一個型別轉換可以轉換為單精度hex2num(single(str))

    num2hex(num),將一個雙精度的數num(預設)裝換成16進位制字串(當然也可以強制轉換num2hex(single(num)) )

    注意,上面所提到的16進位制數,並非其邏輯上的16進位制,而是其機器上的2進位制數對應的16進位制

    比如

    一個10進位制(邏輯上)數3.5 對應的16進位制(邏輯上)數為3.8

    matlab裡面的dec2hex() 和 hex2dec都是邏輯上的轉換 // 當然如果你這樣輸入 dec2hex(3.5) 會出錯,因為這個函式只是針對整數

    一個單精度精度數和一個雙精度數在matlab裡面是這樣儲存的

    先將浮點數3.5轉換成其邏輯上的2進位制,比如3.5對應的2進製為11.1,然後寫成科學計數1.11*2^1

    容易知道,寫成科學計數法之後第一位一定是1,所以這一位不用管,只記錄其尾數(1.11)11,

    其指數是1,符號是正號(0)

    單精度的格式

    X /XXXX XXXX / XXXX XXXX XXXX XXXX XXXX XXX

    第一部分為符號為,即正為0,負數為1

    第二部分為指數為,表示-127~128,而其範圍為0~255,所以實際儲存是實際指數+127,即1+127=128 1000 0000

    第三部分是尾數,即11

    所以3.5在計算機中就是表示為0100 0000 1100 0000 0000 0000 0000 0000,數一數應該是32位,單精度就是32位

    所以其對應的16進位制就是

    40600000

  • 中秋節和大豐收的關聯?
  • 車間領料要怎麼做記賬憑證啊?