-1

据我所知,在 64 位编译器中,(取决于编译器) unsigned long long 的最大大小可能类似于18446744073709551615ull ,所以当我想要我的 .c 程序时,我尝试搜索并将文字替换为-1ul由 32 位编译器编译,它确实有效,因为它等于 2^64 并且所有 64 位都是 1,所以 32 位的表示是 -1ul(我认为基于二进制补码)

但我想知道编号 9223372036854775808ull因为它是 2^(64-1) ,那么 32 位文字是什么?-2ul 还是 1ul????

谁能向我解释这个转换过程?不知怎的搞糊涂了……

阿米尔

4

1 回答 1

1

9223372036854775808ull是十六进制的,当你把它放入变量类型时0x8000000000000000变成(最后八个十六进制数字)。0x00000000int32

看来您需要学习有关以二进制格式存储数据的基础知识。只需阅读相关的wiki 页面和一些文章,并练习手动(在纸上)在不同表示之间转换数字。

于 2012-09-19T20:39:27.867 回答