请问:哪一位大侠有在32位机器上实现64位除法的程序呀 C码的.

cpaal 2007-08-26 08:52:58
请问:哪一位大侠有在32位机器上实现64为除法的程序呀

{
unsigned int hight;
unsigned int low;
}

如果可以给出小数的前2位最好,如果没有就算了 我再自己想办法,
我就100分,倾力奉献.
...全文
716 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpaal 2007-09-21
  • 打赏
  • 举报
回复
用的是vxworkx 给硬件遍程序. 没有64位的,不是windows.

既然有写的就都给分把. 算是缘分.

唯一一个给出程序的 无论是否正确 都多给点把.

等了很多天都没有人给 程序只好按照 前几楼说的 自己写了.呵呵已经搞定.
chen_de_sheng 2007-09-19
  • 打赏
  • 举报
回复
顶楼上的 double
Treazy 2007-09-18
  • 打赏
  • 举报
回复
奇怪了,double为什么不用呢?
expter 2007-09-18
  • 打赏
  • 举报
回复
iwillalwaysloveyou 2007-09-08
  • 打赏
  • 举报
回复
32位x86 cpu直接支持64位除法,用汇编很少的几行指令
Hunter8212 2007-09-07
  • 打赏
  • 举报
回复
MARK了!
expter 2007-09-07
  • 打赏
  • 举报
回复
mark
xsUMBRO 2007-09-07
  • 打赏
  • 举报
回复
typedef signed __int64 INT64, *PINT64;

Int64 值类型表示值介于 -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数。

Int64 为比较此类型的实例、将实例的值转换为它的字符串表示形式以及将数字的字符串表示形式转换为此类型的实例提供了相应的方法。

但,在 32 位 Intel 计算机上分配 64 位值不是原子操作;即该操作不是线程安全的。这意味着,如果两个人同时将一个值分配给一个静态 Int64 字段,则该字段的最终值是无法预测的。
有关格式规范代码如何控制值类型的字符串表示形式的信息,请参见格式化概述。此类型实现接口 IComparable、IFormattable 和 IConvertible。使用 Convert 类进行转换,而不是使用此类型的 IConvertible 显式接口成员实现。

楼主怎么遇到这个问题的,具体什么环境?
chai2010 2007-09-06
  • 打赏
  • 举报
回复
以前做rsa的时候用的一个函数:

// 计算(u*v)%m

unsigned mul_mod(unsigned u, unsigned v, unsigned z)
{
// 如果u*v没有溢出, 则直接计算

if((u*v)/u == v) return (u*v)%z;

// 进行长乘法(结果为64位)

unsigned u0, v0, w0;
unsigned u1, v1, w1, w2, t;

u0 = u & 0xFFFF; u1 = u >> 16;
v0 = v & 0xFFFF; v1 = v >> 16;
w0 = u0*v0;
t = u1*v0 + (w0 >> 16);
w1 = t & 0xFFFF;
w2 = t >> 16;
w1 = u0*v1 + w1;

// x为高32位, y为低32位

unsigned x = u1*v1 + w2 + (w1 >> 16);
unsigned y = u*v;

// 进行长除法(被除数为64位)

for (int i = 1; i <= 32; i++)
{
t = (int)x >> 31; // All 1's if x(31) = 1.

x = (x << 1) | (y >> 31); // Shift x || y left
y <<= 1; // one bit.

if((x|t) >= z) { x -= z; y++; }
}

return x; // y为商, x为余数
}
星羽 2007-08-27
  • 打赏
  • 举报
回复
double

_int64
laiwusheng 2007-08-27
  • 打赏
  • 举报
回复
c interface and implement
cpaal 2007-08-27
  • 打赏
  • 举报
回复
晕 有什么资料好学的吗?
100分呢 也不少了 兄弟门就没有自己原先保存过的关于这个方面的代码吗?
sunlin7 2007-08-27
  • 打赏
  • 举报
回复
直接用__int64 a, b, c;声明变量,使用c = a / b;即可,但是仅整除,没有小数点。
cpaal 2007-08-27
  • 打赏
  • 举报
回复
晕 标准C里没有 _int64.
用的是vxworks
iambic 2007-08-26
  • 打赏
  • 举报
回复
32位机器上也有64位的整数和浮点数。
agaric 2007-08-26
  • 打赏
  • 举报
回复
可以学习一下任意精度算法,不只64位
sunlin7 2007-08-26
  • 打赏
  • 举报
回复
数据结构与算法的书上有这样类型的算法,用分部除法。自己耐心写吧,很简单的。

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧