标签: extended-precision

java中80位扩展精度的转换

我正在开发一个程序,它将真正旧的 Open Access 4 .df 文件转换为其他格式,并创建数据库脚本 - 我已经能够转换除十进制类型之外的所有可能的类型。我发现字节顺序必须是 80 位扩展精度。我已经尝试自己进行转换,但无法将 80 位扩展精度(https://en.wikipedia.org/wiki/Extended_ precision#x86_Extended_Precision_Format )转换为字符串以及将字符串转换为 80 位扩展精度Java 中的精度。

  1. 例子:

价值:1,235

来自 df 文件的十六进制:40 00 9e 06 52 14 1e f0 db f6

  1. 例子:

价值:0,750

来自 df 文件的十六进制:3f ff c0 00 00 00 00 00 00 00

也许有人可以帮助转换?

此致

@EJP评论:好吧,我扔掉了最后16位,所以我得到了 3f ff c0 00 00 00 00 00 关于(Java - Convert hex to IEEE-754 64-bit float - double precision)我尝试将其转换为

String hex = "3fffc00000000000";
long longBits = Long.valueOf(hex ,16).longValue();
double …
Run Code Online (Sandbox Code Playgroud)

java type-conversion extended-precision

5
推荐指数
1
解决办法
1138
查看次数

汇编:增加2(或更大数字)而不破坏ADC循环中的CF?

我试图在Windows中测试TDM-GCC 64位汇编中的附加功能.我在前一段时间搜索了资源,我遇到了类似的代码(我做了一些修改,在TDM-GCC中编译它).

typedef struct
{
    int size;
    __uint64_t uints[130];
} BigInteger;

void add(BigInteger *X, BigInteger *Y);   // X += Y
    // %rcx holds address of X, and %rdx holds address of Y apparently.

    // calc.s - assembly file
    .globl add
add:
    movq    8(%rdx), %rax
    addq    %rax, 8(%rcx)
    movq    16(%rdx), %rax
    adcq    %rax, 16(%rcx)
    movq    24(%rdx), %rax
    adcq    %rax, 24(%rcx)
    ...     ...
Run Code Online (Sandbox Code Playgroud)

第一个汇编代码有效.不利的是,只要计算最大尺寸就需要很小的数字.所以我改为检查X和Y的大小并设置一个大小条件的循环,这样如果X和Y不大,它就不会总是添加整个数组.

    ...
// %r13 holds X addr, %r14 holds Y addr.
    addq    $8, %r13   // I have tried  incq …
Run Code Online (Sandbox Code Playgroud)

assembly x86-64 bigint extended-precision tdm-gcc

3
推荐指数
1
解决办法
97
查看次数

16 位 x 32 位的汇编乘法 => 48 位

假设我想在汇编中将一个大数乘以另一个(可能很小)的数。大数(被乘数)DX:AX保存在BX. 该MUL指令仅对 进行操作AX。那么该怎么办DX呢?

例如,数字是0001:0000H(65536),我想将其乘以 2。

number     dw   0000h, 0001h
...
mov    ax, [number]
mov    dx, [number+2]
mov    bx, 2
mul    bx   ; it is ax*2 or 0000*2
Run Code Online (Sandbox Code Playgroud)

所以结果为零!对此有什么想法吗?

assembly bigint extended-precision x86-16

1
推荐指数
1
解决办法
1万
查看次数

8086 asm 中 64 位数字乘以 32 位数字

我什至在启动问题的解决方案时遇到问题。我曾尝试考虑乘法是重复加法算法,但无论我考虑什么算法,我似乎都专注于一个问题——8086 中的最大寄存器大小是 16 位。

data segment
num1 dw 0102h,0304h,0506h,0708h
num2 dw 0102h,0304h
res dw ?,?,?,?,?,?
data ends

code segment
assume CS:CODE, DS:DATA
start:
mov ax,DATA
mov DS,ax
Run Code Online (Sandbox Code Playgroud)

.....填写代码.......

在这一点上,我被卡住了。即使是轻微的代码提示或算法也将不胜感激。

algorithm assembly bigint extended-precision x86-16

0
推荐指数
1
解决办法
639
查看次数