二進位制float與int之間的轉化關係

2021-10-14 23:07:38 字數 1978 閱讀 6528

廢話不多說,先上**:

#includeusing namespace std;

//二進位制數不變(即01序列不變),從32位float型資料轉成32位int型資料

int float2bitint(float a)

; int sign = 0;

float num = a;

if (num < 0.0f)//取float資料的絕對值

bits[0] = sign;

if (num < 1.0f)//小於1

if (num1 < 1.0f)//小於2^-126

int ex = bitright + 127;

for (int i = 8; i >= 1; --i)//指數部分的二進位制

num1 -= 1.0f;

int iter = 23;

int ii = 0;

while (iter > 0)//尾數部分的二進位制數

}else//大於1

int leftshift = std::max(0, numbit - 24);// num / pow(2.0f, );

float smallnum = num / pow(2.0f, leftshift);

int zhenshu = int(smallnum);

float xiaoshu = smallnum - zhenshu;

int em[24];

int numbitofzhenshu = 0;

while (zhenshu > 0&& numbitofzhenshu < 24)//得到整數部分的二進位制數

int ex = numbitofzhenshu -1;

int cr = std::min(ex, 23);

for (int i = 0; i < cr; ++i)//得到尾數部分中整數的二進位制數

int numbitofxiaoshu = 23 - cr;

int ii = 0;

while (numbitofxiaoshu > 0)//得到尾數部分中小數的二進位制數

ex += leftshift;

ex += 127;

for (int i = 8; i >= 1; --i)//得到指數部分的二進位制數

} int result = 0;

for (int i = 1; i < 32; ++i)

result *= (bits[0] == 0 ? 1 : -1);

return result;

}//二進位制數不變(即01序列不變),從32位int型資料轉成32位float型資料

float int2bitsfloat(int num)

; int n = num;

bits[0] = 0;

if (n < 0)

int iter = 31;

while (iter > 0)

int sgn = bits[0];

int ex = 0;

for (int i = 1; i <= 8; ++i)

ex -= 127;

float result = pow(2.0f, ex);

for (int i = 9; i < 32; ++i)

result *= pow(-1.0f, sgn);

return result;

}//列印float型數的二進位制數(32位01序列)

void floattostring(float fnum)

pstr[32] = '\0';

for (int i = 0; i < 32; ++i)

std::cout << pstr[i];

std::cout << std::endl;

delete pstr;

pstr = null;

}int main()

return 0;

}

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

十進位制與二進位制之間轉換詳解

二 二進位制數轉成十進位制數 三 十進位制正整數轉八進位制 基本原理 除基數倒取餘數法。即 十進位制轉二進位制,基數就是2,用2整除乙個十進位制正整數,可以得到乙個商和餘數 再用2去除商,又會得到乙個商和餘數 如此進行,直到商為0 然後把先得到的餘數作為二進位制數的低位有效位,把後得到的餘數作為二級...

十進位制與二進位制之間的轉換

一 正整數的十進位制轉換二進位制 要點 除二取餘,倒序排列,高位補0 例如把52換算成二進位制數,計算結果如圖 52除以2得到的餘數依次為 0 0 1 0 1 1,倒序排列,所以52對應的二進位制數就是110100。由於計算機內部表示數的位元組單位都是定長的,以2的冪次展開,或者8位,或者16位,或...