回覆列表
  • 1 # 網上的跳蚤

    在matlab中有這麼兩個函式hex2num(str),將16進位制字串str(預設雙精度)轉換成一個數(如果加一個型別轉換可以轉換為單精度hex2num(single(str))num2hex(num),將一個雙精度的數num(預設)裝換成16進位制字串(當然也可以強制轉換num2hex(single(num)) )注意,上面所提到的16進位制數,並非其邏輯上的16進位制,而是其機器上的2進位制數對應的16進位制 比如一個10進位制(邏輯上)數3.5 對應的16進位制(邏輯上)數為3.8matlab裡面的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

  • 中秋節和大豐收的關聯?
  • 一九六七年七月十四是什麼星座?