1. 程式人生 > >float型別和16進位制資料轉換

float型別和16進位制資料轉換

先看一下IEEE關於浮點數的定義:

IEEE 754規定了四種表示浮點數值的方式:單精確度(32位元)、雙精確度(64位元)、延伸單精確度(43位元以上,很少使用)與延伸雙精確度(79位元以上,通常以80位元實做)。只有32位元模式有強制要求,其他都是選擇性的。

32位單精度

單精度二進位制小數,使用32個位元儲存。

1 8 23 位長
S Exp Fraction
31 3023
偏正值 +127
220 位編號(從右邊開始為0)

S為符號位

Exp為指數位

Fraction為有效數位

指數部分即使用所謂的偏正值形式表示,實際值為表示值與一個固定值(32位的情況是127)的和。採用這種方式表示的目的是簡化比較。因為,指數的值可能為正也可能為負,如果採用補碼錶示的話,全體符號位S和Exp自身的符號位將導致不能簡單的進行大小比較。正因為如此,指數部分通常採用一個無符號的正數值儲存。單精度的指數部分是−126~+127加上127 ,指數值的大小從1~254(0和255是特殊值)。浮點小數計算時,指數值減去偏正值將是實際的指數大小。

例如有一個浮點數是6.91,如何將其轉換為十六進位制呢?

首先將6.91轉換為二進位制形式:

110.111010001111010111000

將其規範化:調整使其實數第一位大於1小於2

6.91 =  1.10111010001111010111000 * 2^2

基本原型出來了

S:0

EXP : 2+127(10進位制) =129(10進位制) = 10000001(2進位制)

Fraction : 10111010001111010111000 (注意:小數點前面的1不要了)

組合一下: 0  10000001  10111010001111010111000

            =  0100 0000 1101 1101 0001 1110 1011 1000

            =  4       0        D      D       1       E       B       8

相關推薦

float型別16資料轉換

先看一下IEEE關於浮點數的定義: IEEE 754規定了四種表示浮點數值的方式:單精確度(32位元)、雙精確度(64位元)、延伸單精確度(43位元以上,很少使用)與延伸雙精確度(79位元以上,通常以80位元實做)。只有32位元模式有強制要求,其他都是選擇性的。 3

Python 位元組陣列 16字串轉換

在例子中對指定的字串: faa5fbb5fcc5fdd5010200000028000001900000000a002d00000000017d7840000003e800005fa55fb55fc55fd5   使用了三種方法將其轉換為大寫字母並每隔2個字元用空格分割處理後得

python byte 陣列 16字串轉換

假設: hex_string = “deadbeef” 轉換成字串格式 >>> hex_data = hex_string.decode("hex") >>> hex_data "\xde\xad\xbe\xef" 轉

printf、sscanf進行16資料轉換問題

問題1:原程式的目的是將字串形式的mac地址存放在char型陣列當中(如有更好的獲取方法留言說下,謝謝),程式碼如下,在mac執行如下程式碼後,變數int型值發生了變化。 #include <stdio.h> typedef unsigned int ui

android開發中遇到的轉換16資料流轉字串的相互轉換

最近開發的程式是利用無線網路,收發資料,其中,接收和傳送的格式是16進位制位元組陣列 byte[],而顯示到介面中則不可能把一堆的位元組流顯示出來。因此,需要進行一下轉換。  直接說轉換的演算法吧        一、16進位制位元組陣列轉換成字串 核心的語句就一句getSt

串列埠通訊資料傳送--字元傳送16傳送--傳送位元組的間隔時間

在計算機中,所有的資料在儲存和運算時都要使用二進位制數表示(因為計算機用高電平和低電平分別表示1和0),例如,像a、b、c、d這樣的52個字母(包括大寫)、以及0、1等數字還有一些常用的符號(例如*、#、@等)在計算機中儲存時也要使用二進位制數來表示,而具體用哪些二進位制數字

Delphi TColor16顏色的相互轉換

Delphi TColor和16進位制顏色的相互轉換 function TColorToHex(Color: TColor): string; begin   Result :=     IntToHex(GetRValue(Color),

python2/3中 將base64資料寫成圖片,並將圖片資料轉為16資料的方法、bytes/string的區別

1.python2將base64資料寫成圖片,並將資料轉為16進位制字串的方法 import binascii img = u'R0lGODlhagAeAIcAAAAAAAAARAAAiAAAzABEAABERABEiABEzACIAACIRACIiACIzADMAADMRADMiADMzADd3

Android TCP/IP 傳送接收16資料

幫朋友推薦,贏眾投理財,CEO是我朋友,全是真實可靠的農業專案,投資收益可達年化9.8%,且有多重安全保障! // 設定伺服器IP和埠private static final String SERVERIP_2        ="192.168.5.178"; p

bmp圖片轉換16資料

最近在開發中要在aboot中顯示一張圖片。但是發現aboot中顯示圖片不是直接拿圖片檔案來顯示的,而是把一個16進位制的資料序列依次往螢幕上搬運,就可以了。 那問題是,怎麼把一張圖片轉換成16進位制的資料序列? 在網上也找了一些資料,也諮詢了一些同事,最後終於搞定,下

iOS藍芽開發 —— 連線列印機發送16資料的問題

最近在做公司的一個藍芽連線印表機的專案,正常的藍芽連線印表機進行列印沒問題,但是要傳送一個16進位制的指令來獲取藍芽裝置資訊時頗費了一番功夫,現做如下記錄: Byte byteArray[] = {0x1d ,0x67 ,0x61}; NSData *sendData = [NSData data

bcd碼16的區別

其16進位制就是:23F 如果轉換為BCD碼,因為BCD是沒有A~F的,則每一位乘以其位權為: 1x 1(2的0次方)+ 1x 2(2的1次方)+ 1x 4(2的2次方)+ 1x 8(2的3次方)+ 1x16(2的4次方)+ 1x32(2的5次方)+ 0x64(2的6次方)+ 0x128(2的7次方)+ 0x

字串16字串的相互轉化

我們在工作中,有時候會需要將字串轉化為16進位制字串給使用者,因為ASCII中有些字元,當我們使用printf("%s",p_ch);輸出時會雜亂無章,如果採用16進位制,會好很多。因此編寫程式,程式碼如下: 點選(此處)摺疊或開啟 #include <st

MD5加密的真正字串 16構建的字串 區別

這兩天做專案一直在被這個問題煩惱 我們的md5驗證字串 和合作方介面提供的字串不一致。原因不明。 問了下朋友,他說不通語言對中文的加密結果不一致。 我挺鬱悶 我用的是c#,對方使用java。 最後還是群裡的一個朋友說明了真相。 真相就是 什麼語言對md5的加密結果都一

將long整型轉為二進位制16,存於字串中

1.將Long整型轉為二進位制 #include<iostream> #include <vector> #include <assert.h> #include

用816建立字串

開始 #include <string> // 8進位制Oct(octonary) //10進位制Dec(decimal) //16進位制Hex(hexadecimal) int main() { //我想將一個16/8/10進位制的數字賦值給一個int

ASCII字元16互轉

C語言中,字元和其ASCII碼是等價的,比如’A’這個字元和單位元組整數65是等價的. 比如char c=’A’;int a=c;的話,a就是65//函 數 名:CharToHex() //功能描述:把ASCII字元轉換為16進位制 //函式說明: //呼叫函式: //全域性

二進位制16的轉化與輸出

package sha; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmExcept

輸入一個十進位制整數,設計遞迴函式,將該整數轉化為一個二進位制數。 思考: 如何將一個十進位制數轉化成一個816數。

1,輸入一個十進位制整數,設計遞迴函式,將該整數轉化為一個二進位制數。思考: 如何將一個十進位制數轉化成一個8進位制和16進位制數。 #include<stdio.h> #define  N  20 int main() { int a,n,c,k,i; cha

Android 列印輸出16資料

最近在做安卓於硬體通訊的專案,傳輸資料都是十六進位制, 研究了一下安卓列印十六進位制的方法。 public class test { public static void main(String[] args) {for(int i=0x0;i<=0xf;i++){