gcc里如何输出128位整数

bacmoz 2006-08-04 11:46:06
amd asm64-handout这篇手册里提到gcc里提供__int128_t和__uint128_t的128位整数类型
在我的机子上也能编译通过运行,但不知道如何输出这两个类型的数据
找遍google都找不到
有知道如何用printf或其它方法输出__int128_t的方法的吗?
...全文
1025 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dong 2006-08-05
  • 打赏
  • 举报
回复
as GCC doesn't yet provide <stdint.h>, but as it changes GCC's understanding of the type of the built-in function imaxabs if nothing else, and of the types expected by printf %jd and %ju,it makes no sense without corresponding library changes to use such a bigger intmax_t, and such a library would have a different ABI from the
previous one

----------------------------
__int128_t m = 11111111111111111111;
printf("%jd",m);

呵呵,不知道可以不可以。没有经验和实践!
utstar 2006-08-05
  • 打赏
  • 举报
回复
我的gcc里怎么没有__int128_t?
jixingzhong 2006-08-05
  • 打赏
  • 举报
回复
呵呵, 没用过 ...

128位 ... %lld ?
不知 ...

实在不行,
楼主把数据转换成 string 来输出好了 ...
bacmoz 2006-08-05
  • 打赏
  • 举报
回复
~~~~

那就没办法了~ 那你用别的语言写 java什么的~~ 处理的数就打了~
~ 呵呵~ 一般这样的大数都是用数组~~

我的意思是数组的大小是千万量级的,每个元素是128位的
utstar 2006-08-05
  • 打赏
  • 举报
回复
编译器是不支持数据输出的,输出是靠库函数完成的,而库函数与自己创建的函数是没有本质区别的,所不同的是库函数可能针对特定的平台作汇编代码级的优化,而自己写的函数则不便于作这样的优化,因为要考虑跨平台移植问题
bo.cui 2006-08-05
  • 打赏
  • 举报
回复
~~~~

那就没办法了~ 那你用别的语言写 java什么的~~ 处理的数就打了~
~ 呵呵~ 一般这样的大数都是用数组~~
bacmoz 2006-08-05
  • 打赏
  • 举报
回复
我觉得gcc编译器既然提供这种类型,则必然支持输出它的方法
我要处理的数据是非常大的,至少几百万量级,一般在千万以上,自己用数组输出和用编译器支持的方式输出,效率差别会非常大
挺拔的劲松 2006-08-05
  • 打赏
  • 举报
回复
你用数组扩展一下数位输出不就行了,为什么要编译器支持输出这么大的数.
bacmoz 2006-08-05
  • 打赏
  • 举报
回复
在amd x86-64CPU上, gcc才提供这种类型
bacmoz 2006-08-05
  • 打赏
  • 举报
回复
还是找不到合适的方法
我做的就是一个大数运算的东西,不过不会用char这种类型的,进制接近2^64,在处理每1个进制位的时候,需要用到128位整数类型(只有乘法的时候用到,并且只是后处理)。之所以选择用128位类型,也是看到gcc的确提供这种类型才把算法设计成这样的。
不过能不能输出不是一个大问题,我最终的结果形式每一位都是64位以内的。
___NULL 2006-08-05
  • 打赏
  • 举报
回复
一般太长的整数可以用 char num[100] 之类的方法来处理,计算就靠你的代码来实现,而不是用简单的用 + - * /

69,373

社区成员

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

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