C語言 IEEE754十進位制數轉二進位制單精度浮點數

2021-09-17 20:35:56 字數 1665 閱讀 8382

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...