給定一個16位數的整數。我必須在C++中使用位操作或任何其他方法來打印它的方格。我嘗試將該數字作爲long int使用,但它不起作用範圍long int小於期望的輸入。一個非常大的數字的方塊
回答
廣場是一個無符號整數(32位)完全可表示:
#include <iostream>
#include <cstdint>
int main()
{
std::int32_t s = (std::int32_t(1) << 16) - 1;
std::uint32_t u = std::abs(s);
std::uint32_t square = u * u;
std::cout << square << " = " << std::hex << square << '\n';
return 0;
}
擁有一個有符號整數,你將面臨溢出,並得到一個負數。
我不認爲他的意思是16位整數。我認爲他的意思是16位十進制數字(我自己有點不確定)。 – Jens
「abs」的含義是什麼?什麼是這個簽名的16位數字,其平方不適合int32_t? –
確實@Jens我在找十六進制數字。 –
您可以隨時選擇更大的原始數據類型,但通常這隻會延遲問題。一旦你想採取長期的平方,你應該做什麼?
如果你需要真正的大數字,你需要一個更抽象的封裝數據表示。 C++有適合這項工作的工具,Boost庫通過Boost.Multiprecision廣泛使用它們。具體而言,請查看<boost/multiprecision/cpp_int.hpp>
的文檔。它很複雜,但功能強大。
- 1. C++ - 一個非常非常大的數字
- 2. 尋找兩個非常大的數字乘以一個非常大的數字的模數
- 3. 非常大在一個非常大的B分數
- 4. 一個非常大的數組(連續的內存塊)
- 5. 總結一個非常大的數字的位數
- 6. 將字符串轉換成一個非常大的數字
- 7. 如何獲得一個非常大的整數的平方根?
- 8. 在一個整數中存儲非常大的數字C
- 9. 試圖找到一種方法來「收縮」一個非常大的數字
- 10. 函數用於乘以非常小或非常大的數字
- 11. 對於一個非常大的數字計算
- 12. 在SQL Server中存儲一個非常大的數字
- 13. NSMutableArray indexOfObject返回一個非常大的數字
- 14. 創建並保存一個非常大的數字列表
- 15. 在unix中打印一個非常大的數字
- 16. 如何爲BigInteger分配一個非常大的數字?
- 17. 如何在PHP中表示一個非常大的數字?
- 18. Exponentiate非常大的數字中的R
- 19. 查找非常大的數字
- 20. 增加非常大的數字在VB.NET
- 21. C++中功耗非常大的數字
- 22. decimal.InvalidOperation,DivisionImpossible非常大的數字
- 23. 顯示非常大的數字,用byte []
- 24. 處理非常大的數字
- 25. 如何排序非常大的數字
- 26. BigDecimal.movePointRight()掛起非常大的數字
- 27. 非常大的數字產品
- 28. Streamtokenizer讀取非常大的數字?
- 29. vb.net中非常大的數字
- 30. 如何取兩個非常大的數字的模數?
嘗試將其轉換爲float:'double d =(double)i'?然後位操作會更棘手,但是有很多材料。否則,如果你使用gcc,你可以使用[128位整數](http://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html)。 – Jens
如果你需要很多空間,你總是可以使用'long long i = d * d' –
如果這還不夠,請使用兩個128b整數並手動將這些比特從一個轉移到另一個。看看類似的問題,像[這一個](http://stackoverflow.com/questions/193398/multiplication-of-very-long-integers)。 – Jens