ieee754是由ieee制定的有關浮點數的工業標準。針對於單精度浮點數,其公式如下,s為符號位,只佔1位,為0表示正數,為1表示負數。p為指數(階碼),用移碼表示,佔8位。m為尾數,用原碼表示,佔23位。
x = (-1)s * 1.m * 2p-127浮點數規格化表示:當尾數的值不為0時,規定尾數域的最高有效位為1,不符合規定的則將階碼左移或右移小數點位置。
//程式設計環境:
// 作業系統:windows 7
// 程式設計工具:vs2017
// 程式語言:c/c++語言
#include "pch.h"
#include #include //整數轉r進製
//integer:整數 radix:進製 result:結果陣列 num:生成r進製所佔位數
void d1tob(int integer, int radix, int result, int &num)
num = i;//r進製位數
for (j = 0; j < i / 2; j++)//顛倒順序 }
//小數轉r進製
//decimal:小數 radix:進製 result:結果陣列 num:生成r進製所佔位數
void d2tob(double decimal, int radix, int result, int &num)
num = i;
}int main()
for (i = 0; i < 50; i++)
//確定符號位
if (number > 0)
else
//將浮點數分成整數和小數
integer = (int)number;
decimal = number - integer;
//分別將整數和小數轉化成二進位制
int m_n1, m_n2;
d1tob(integer, 2, m, m_n1);
d2tob(decimal, 2, m + m_n1, m_n2);
//規格化,計算階數, 尾數
int pn = 0;//階數
if (integer > 0)//小數點左移
}else//小數點右移
pn = -i -1;
for (j = 0; j < 23; j++)//去掉左邊無效的0和第乙個的1
}//計算階碼
int p1[8], pn1;
d1tob(pn + 127, 2, p1, pn1);//階數轉二進位制
if (pn1 < 8)//不足8位左邊補0
for (int k = 0; k < pn1; k++)//得出完整p
}else
}//輸出s
printf("%d ", s);
//輸出p
for (i = 0; i < 8; i++)
printf(" "); //輸出s
//輸出m
C 十進位制數轉16進製制數
最近在做乙個專案,其中傳送部分需要對資料進行移位和 操作,在網上找了許久的轉換方式,結果並沒有。後來領導一句話,讓我明白了,十進位制數和16進製制數是一樣的 確實,貌似,剛來時,用c 對公司原有的專案進行維護時,增加過乙個標定功能,給傳送陣列賦的就是10進製的說。data volt 2 byte 0...
IEEE754二進位制浮點數算術標準
對於32位浮點數 sign 符號,1位 exponent 指數,8位,偏碼 fraction 分數,23位,原碼 特殊值 指數域的編碼值 指數的實際值 127 這樣按照字典序的順序就可以比較兩個指數域的編碼值的大小,在比較兩個浮點數大小時比使用原碼方便 規約形式 規約 是指用唯一確定的浮點形式去表示...
任意進製轉換十進位制 c語言
也不算是任意進製,最高只能到十六進製制。見諒!如下 include include include define maxsize 100 靜態順序棧儲存的最大空間 const char f 0123456789abcdef 定義乙個全域性常量 方便匯出十進位制以上的不為數字形式的資料的顯示 void...