引数に 80 ビットの整数を取り、それをバイナリに変換してから、いくつかのビット シフト操作を行う必要があります。このスニペット (正常に動作するようです) を使用して、引数を保存します。
uint64_t n;
seed= strtol(argv[1], &p, 10);
printf("n:%" PRIu64 "\n", n);
次に、この関数を使用してバイナリに変換したいと思います。
uint64_t decimal_binary(uint64_t n)
{
uint64_t rem, i=1;
uint64_t binary=0;
while (n!=0)
{
rem=n%2;
n/=2;
binary+=rem*i;
i*=10;
}
return binary;
}
しかしその後:
printf("n:%" PRIu64 "\n", n); /* works fine, even for n >= 1048576 */
printf("n:%" PRIu64 "\n", decimal_binary(n)); /* works only for n <= 1048575 */
ビットシフト演算子を使用する必要があるため、で動作するソリューションが必要<<
です。