導航:首頁 > 源碼編譯 > 16進制浮點數演算法

16進制浮點數演算法

發布時間:2022-05-30 19:39:08

1. java16進制浮點數表示法

2. c語言中p-記數法是什麼

C99 里16進制浮點數記數法。類似E,但不同。數以0x開頭(數字0字母x),然後是16進制浮點數部分,接著是p,後面是以 2為底的階碼。

例如:0xb.1ep5 其中:

b.1e 是16進制浮點數, 乘後面的p5。p5 等於 2的5次方(10進制512)。

所以化成十進制:(11+1/16.0+14/256.0) * 512.0。

(2)16進制浮點數演算法擴展閱讀:

循環結構:

循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do while循環和for循環。

四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤。

特別要注意在循環體內應包含趨於結束的語句(即循環變數值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。

三個循環的異同點:用while和do…while循環時,循環變數的初始化的操作應在循環體之前,而for循環一般在語句1中進行的。

while循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while循環和for就可能一次都不執行。

3. 十六進制轉浮點數

VB有專門的API函數CopyMemory能處理2-10進制浮點數轉換和10-2進制浮點數轉換。
下列代碼演示了10進制Single(單精度浮點型轉為16進制字元顯示的浮點數和其相反運算:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub BinToSin_Click()
Dim sinStr As String
Dim sinSj As Single
Dim Buffer(3) As Byte
Dim i As Integer
sinStr = Text2
For i = 1 To Len(Text2) Step 2
Buffer((7 - i) / 2) = Val("&H" & Mid(sinStr, i, 2))
Next
CopyMemory ByVal VarPtr(sinSj), ByVal VarPtr(Buffer(0)), 4
Text3 = sinSj
End Sub

Private Sub SinToBin_Click()
Dim i As Integer
Dim hexData As String
Dim a As Single
Dim Buffer(3) As Byte
a = Val(Text1)
CopyMemory Buffer(0), a, 4
For i = 0 To 3
If Len(Hex(Buffer(i))) = 1 Then
hexData = "0" & Hex(Buffer(i)) + hexData
Else
hexData = Hex(Buffer(i)) + hexData
End If
Next
Text2 = hexData
End Sub

4. C語言十六進制浮點數科學計數法

你的數應該這樣寫的 0xa.1f 10p
a是10
.1f表示1/16加上15/256
p10表示2的10次方(即1024)
即 0xa.1f 10p =10+ 1*(16的-1次方)+ 15*(16的-2次方) ×(2的10次方)
類似於十進制數1.23=1+2*10的-1次方+3*10的-2次方

5. 怎麼將4位元組16進制轉化成浮點數

四個位元組的十六機制數組轉浮點數:

byte[bytes=newbyte[4];

BitConverter.ToSingle(bytes,0)。

四位元組16進制數可轉換為四個二進制位元組(Bytes),從而使用Api函數來處理成單精度浮點數。以下用VB代碼處理。

VB有專門的API函數CopyMemory能處理2-10進制浮點數轉換和10-2進制浮點數轉換。

(5)16進制浮點數演算法擴展閱讀

例:

charp[4]={0x1e,0x0d,0xa8,0x3c};轉換成浮點數:0.0205140,還有如何判斷,這四個十六進制轉換成浮點數是正數還是負數。

#include<stdio.h>

intmain(void)

{floata=0.0f;unsignedchar*b

=(unsignedchar*)&a;

charc[4]={0x1e,0x0d,0xa8,0x3c};

inti=0;

//printf("b1:%d ",b);

for(i=0;i<4;i++){ b[i]

=(unsignedchar)c[i]; }

//printf("b2:%d ",*b);

printf("結果為: ");

printf("%f ",a);

//printf("a:%d ",a)

6. 16進制浮點數如何轉化為10進制啊

最簡單的方法,先將16進制數寫成2進制數,再轉化為10進制數。由於16是2的4次方,所以每個16進制數上的每一位,可以寫成4位的2進制數
比如:
1abc=0001
1010
1011
1100
再轉換為10進制

7. 浮點數怎麼計算要詳細過程··

一個浮點數a由兩個數m和e來表示:a = m × b^e。

在任意一個這樣的系統中,我們選擇一個基數b(記數系統的基)和精度p(即使用多少位來存儲)。m(即尾數)是形如±d.ddd...ddd的p位數(每一位是一個介於0到b-1之間的整數,包括0和b-1)。如果m的第一位是非0整數,m稱作規格化的。

有一些描述使用一個單獨的符號位(s 代表+或者-)來表示正負,這樣m必須是正的。e是指數。

例如,一個指數范圍為±4的4位十進制浮點數可以用來表示43210,4.321或0.0004321,但是沒有足夠的精度來表示432.123和43212.3(必須近似為432.1和43210)。當然,實際使用的位數通常遠大於4。

(7)16進制浮點數演算法擴展閱讀:

浮點數並不一定等於小數,定點數也並不一定就是整數。

C++中的浮點數有6種,分別是:

float:單精度,32位

unsigned float:單精度無符號,32位

double:雙精度,64位

long double:高雙精度,80位

純小數要想用二進製表示,必須先進行規格化,即化為 1.xxxxx * ( 2 ^ n ) 的形式(「^」代表乘方,2 ^ n表示2的n次方)。對於一個純小數D,求n的公式如下:

n = 1 + log2(D); // 純小數求得的n必為負數

再用 D / ( 2 ^ n ) 就可以得到規格化後的小數了。接下來就是十進制到二進制的轉化問題,為了更好的理解,先來看一下10進制的純小數是怎麼表示的,假設有純小數D,它小數點後的每一位數字按順序形成一個數列:

{k1,k2,k3,...,kn}

那麼D又可以這樣表示:

D = k1 / (10 ^ 1 ) + k2 / (10 ^ 2 ) + k3 / (10 ^ 3 ) + ... + kn / (10 ^ n )

推廣到二進制中,純小數的表示法即為:

D = b1 / (2 ^ 1 ) + b2 / (2 ^ 2 ) + b3 / (2 ^ 3 ) + ... + bn / (2 ^ n )

8. 16進制的浮點數a.c等於10進制的多少

A.C (h)
=10x16^0 + 12x16^(-1)
=10.75 (d)

9. 急求十六進制轉浮點數C程序!!!

#include
<stdio.h>
#include
<stdint.h>
void
test_disassemble_float(){
float
a
=
1.0,
b
=
2.3;
uint8_t
*pa
=
(uint8_t
*)&a,
*pb
=
(uint8_t
*)&b;
printf("%f:
%02x,
%02x,
%02x,
%02x\n",
a,
pa[0],
pa[1],
pa[2],
pa[3]);
//
output:
0x00,
0x00,
0x80,
0x3f
printf("%f:
%02x,
%02x,
%02x,
%02x\n",
b,
pb[0],
pb[1],
pb[2],
pb[3]);
//
output:
0x33,
0x33,
0x13,
0x40
}
void
test_assemble_float(){
uint8_t
pa[4]
=
{0x00,
0x00,
0x80,
0x3f};
uint8_t
pb[4]
=
{0x33,
0x33,
0x13,
0x40};
printf("%f\n",
*((float
*)pa));
printf("%f\n",
*((float
*)pb));
}
int
main(){
test_disassemble_float();
test_assemble_float();
//
這兩個函數,第一個把float拆成了4個uchar,第二個用4個uchar組成了一個float;
//
剩下的就不難了吧,讀4個uchar,放到數組里,強制轉換;
//
按照你的意思,每個uchar都讀2個十六進制數字就行了;
return
0;
}

10. 16進制浮點數如何轉化為10進制

1、打開Microsoft Visual Studio 2010, 新建名字為【進制轉換示例】的程序。

閱讀全文

與16進制浮點數演算法相關的資料

熱點內容
畢業設計單片機模擬 瀏覽:835
阿里ai雲伺服器 瀏覽:433
小程序雲伺服器可以綁個人賬戶嗎 瀏覽:727
王者榮耀體驗服ios怎麼登陸安卓的 瀏覽:285
客戶想要的與程序員理解的 瀏覽:669
矽谷一普通程序員的一天 瀏覽:456
演算法實現兩個集合合並 瀏覽:74
班長命令什麼意思 瀏覽:139
51單片機c語音 瀏覽:733
悅翔v3壓縮比 瀏覽:714
oppo怎樣修改手機里的文件夾名稱 瀏覽:218
PHP圖片上傳替換 瀏覽:139
androidtv桌面 瀏覽:810
miui10版本怎麼隱藏app 瀏覽:52
阿里雲伺服器怎麼輸入命令 瀏覽:426
如何通過伺服器連接網路 瀏覽:664
一張大事年表pdf 瀏覽:396
雞兔同籠java編程 瀏覽:611
應屆生php程序員簡歷 瀏覽:652
格力三匹壓縮機電流測哪根線 瀏覽:77