0

GCC を使用して 2 つの符号付き 64 ビット長データを乗算しようとしています

long long int A;//(A0,A1)
long long int B;//(B0,B1)

次のことについて教えてください

  1. scanfを使って64bit数値を入力する方法
  2. 印刷方法
  3. 2つの数を掛ける
4

3 に答える 3

3
  1. scanf("%lld", &A);
  2. printf("%lld", A);
  3. A*B
于 2012-05-24T14:36:15.227 に答える
1

long long intそれが64ビットであることを確認することはできません。あなたはやってみる必要があります:

#include <stdint.h>

int64_t A, B;
于 2012-05-24T14:50:20.733 に答える
1

これを試してみてください。私もチェックしており、結果にコメントします。

void mulul64(uint64 u, uint64 v, uint64 *whi, uint64 *wlo)
{
uint64 u0, u1, v0, v1, k, t;
uint64 w0, w1, w2;
u1 = u >> 32; u0 = u & 0xFFFFFFFF;
v1 = v >> 32; v0 = v & 0xFFFFFFFF;
t = u0*v0;
w0 = t & 0xFFFFFFFF;
k = t >> 32;
t = u1*v0 + k;
w1 = t & 0xFFFFFFFF;
w2 = t >> 32;
t = u0*v1 + w1;
k = t >> 32;
*wlo = (t << 32) + w0;
*whi = u1*v1 + w2 + k;
return;
}
于 2013-07-17T09:48:52.010 に答える