Math 将十进制转换为十六进制/二进制

Math 将十进制转换为十六进制/二进制,math,floating-point,binary,hex,decimal,Math,Floating Point,Binary,Hex,Decimal,我有一道小数学题 有没有办法将十进制数(例如3.14)转换成十六进制或二进制?如果可能的话,有人能在这里放一些教程或考试的链接吗?(我不想在某些语言中使用它,我通常在数学中需要它。)请帮助 编辑: 输入传入代码: 0.1 ASM代码中的输出: 415740h 另一项输入: 0.058 编译器的另一个输出: 00415748h 但这是如何做到的?它如何转换?十进制到浮点: 我不认为您的输出样本是浮点数编码或.1和.058的其他常见表示形式。我怀疑这些数字是汇编程序或编译器存储浮点编码的地址

我有一道小数学题

有没有办法将十进制数(例如3.14)转换成十六进制或二进制?如果可能的话,有人能在这里放一些教程或考试的链接吗?(我不想在某些语言中使用它,我通常在数学中需要它。)请帮助

编辑

输入传入代码:

0.1
ASM代码中的输出:

415740h
另一项输入:

0.058
编译器的另一个输出:

00415748h
但这是如何做到的?它如何转换?

十进制到浮点:

我不认为您的输出样本是浮点数编码或.1和.058的其他常见表示形式。我怀疑这些数字是汇编程序或编译器存储浮点编码的地址

换句话说,您编写了一些包含浮点文本的文本,汇编程序或编译器将该文本转换为浮点编码,将其存储在某个地址,然后将该地址放入从内存加载浮点编码的指令中

这一假设与两个数字相差8的事实是一致的。由于双精度浮点通常为八个字节,因此第二个地址(0x415748)比第一个地址(0x415740)多八个字节

用浮点编码数字的过程大致如下:

设x为要编码的数字

如果x为正,则将s(符号位)设置为0;如果x为负,则将s设置为1。将x设置为x的绝对值

将e(指数)设置为0。重复以下任何一项:

  • 如果x等于或大于2,则将1加上e并将x除以2。重复此操作,直到x小于2
  • 如果x小于1,则将-1与e相加,并将x乘以2。重复此操作,直到x至少为1
完成上述操作后,x至少为1且小于2。此外,原始数字等于(-1)s·2e·x。也就是说,我们用符号位(s)和2(e)的指数以及[1,2]中的有效位(x)(包括1,不包括2)来表示数字

设置f=(x-1)·252。将f四舍五入到最接近的整数(如果两个整数之间是平号,则四舍五入到偶数)。如果f现在是252,则将f设置为0,并将1添加到e。(此步骤将查找紧跟在“小数点”之后的x的52位“当x表示为二进制数字时,在第52位之后舍入,如果在该位置舍入,则会调整指数,将x舍入到2,这超出了我们需要的间隔。)

将1023加到e中。这对于x没有数字意义;它只是浮点编码的一部分。解码时,1023被减去

现在,将s、e和f转换为二进制数字,s使用一位数字,e使用11位数字,f使用52位数字。如有必要,包括前导零,以便e用11位二进制数字表示,f用52位二进制数字表示。将这些数字串联起来,就有64位。这是常见的IEEE 754编码f或双精度浮点数


有一些特殊情况:如果原始数字为零,则对s、e和f使用零。(s也可以是1,以表示特殊的“负零”。如果在添加1023之前,e小于-1022,则必须进行一些调整以获得“非标准化”“结果或零,我现在不再进一步描述。如果在添加1023之前,e大于1023,则数字的大小太大,无法用浮点表示。可以通过设置e(添加1023之后)将其编码为无穷大。”到2047,f到零。

我不想在某些语言中使用它,我通常在数学中需要它。签出:Mr D-我指的是带逗号的数字(例如521651526)。你不能将浮点数转换为十六进制或二进制。只有自然数才有效。它是十六进制(基数10->基数16),所以,如果你想要浮点,你必须在其中使用浮点,就像FF,EA09一样。但是没有人使用它来解释double/float是如何工作的?它们是由编译器翻译成十六进制的。我在反汇编代码中看到它…你只需将每4个二进制数字转换成1个十六进制就可以了。这是用逗号浮点数表示的数字。它们存储在32位中(或64b表示双精度)。第一位是符号(0=+/1=-),然后是指数的8位(-127-+127),其余是标准化数(不带“1”)。“将x设置为x的绝对值”-你的意思是什么?无论x的值是什么,取其绝对值,并将x更改为该值。因此,如果x为-3,将其设置为3。如果x为3,将其设置为3(这是不变的)。此步骤的目的只是删除符号,以便以下步骤只需处理正数。例如,以下步骤之一计算出指数并将x调整为[1,2]中的值。如果必须写入该步骤,则将正x调整为[1,2],将负x调整为(-2,1],它会更复杂。因此,在这一早期步骤中,我们记住符号(在s中)并将其从x中移除。