廢話不多說,先上**:
#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位,或...