导航:首页 > 源码编译 > 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进制浮点数算法相关的资料

热点内容
程序员被逮捕的判决 浏览:813
android定位获取城市 浏览:599
做服务器客户怎么去找 浏览:997
程序员升职可以干什么 浏览:301
单片机原理课程设计大纲 浏览:909
cad命令大全图表下载 浏览:389
程序员去印度工作 浏览:422
苹果app活动怎么导出 浏览:5
pdf转高清图片 浏览:35
人人玩棋牌源码 浏览:347
如何获取美团服务器时间 浏览:342
php简单加密算法 浏览:795
什么是开服务器 浏览:607
cd4017单片机怎么用 浏览:265
鸟哥pdf 浏览:242
忘记加密的密码了怎么办 浏览:560
好友信息提示音在哪个文件夹 浏览:276
怎么让云服务器转发本地端口 浏览:47
python数组剔除元素 浏览:16
推荐一款解压的手机游戏 浏览:48