2010-06-28 52 views
8

Có thể có số nguyên 128 bit trong Java hoặc C++ không?Làm thế nào tôi có thể biểu diễn một số nguyên 128 bit trong Java hoặc C++?

+2

Bạn cần cụ thể hơn về các yêu cầu mà bạn có. Chỉ cần đại diện nên rõ ràng là có thể: long a, b đại diện cho một số 128-bit như một cặp 64-bit. – unwind

+1

@unwind: dài có thể là 32 bit trên một số trình biên dịch. '__int64' hoặc' long long' sẽ ở mức tối thiểu 64 bit, nhưng không phải là tiện ích mở rộng không chuẩn. – Brian

+0

có thể trùng lặp của [số nguyên lớn trong C++] (http://stackoverflow.com/questions/1815803/big-integers-in-c) – MSalters

Trả lời

9

Trong Java, bạn có thể sử dụng lớp BigInteger để lưu trữ số nguyên tùy ý lớn. Trong C++, bạn có thể sử dụng một thư viện như GMP để có cùng chức năng.

-8

Viết lớp và hoạt động của riêng bạn để biểu thị số 128 bit hoặc sử dụng một số thư viện có sẵn.

+2

Tôi có thể thấy lý do tại sao "viết của riêng bạn hoặc không viết của riêng bạn" được xem là kém hữu ích. Đây là cơ hội cho một huy hiệu 'Áp lực ngang hàng' :) –

0

Lớp BigInteger được thiết kế cho các giá trị số nguyên lớn hơn Long.MAX_VALUE.

2

Bạn có thể. Bạn rất có thể sẽ cần phải sử dụng một thư viện để làm điều này mặc dù, ít nhất là cho C + +.

Tôi thích thư viện PolarSSL hoặc thư viện GNU MP Bignum.

13

Tất nhiên bạn có thể đại diện cho họ.

Tại ít nhất bạn có thể sử dụng mảng byte có 16 phần tử.

Tuy nhiên, câu hỏi đặt ra là nếu bạn chỉ muốn đại diện cho giá trị hoặc thực sự thực hiện một số tính toán với nó.

Trong Java, bạn có thể sử dụng BigInteger để thể hiện (hiệu quả) các giá trị số nguyên có kích thước tùy ý cũng làm các phép tính.

0

java.math.BigInteger

Để làm việc với số nguyên có dung lượng lớn hơn 64 bit (kích thước của một dài), sử dụng java.math.BigInteger. Lớp này đại diện cho các số nguyên không bị chặn và cung cấp một số phương thức để làm số học với chúng.

http://leepoint.net/notes-java/data/numbers/10biginteger.html

Nếu bạn cần sử dụng giá trị thập phân BigDecimal

0

Tất nhiên, bạn có thể sử dụng BigInteger lớp trong gói java.math. Lớp này cung cấp các phép toán cho phép tính số học mô-đun, tính toán GCD, kiểm tra tính nguyên thủy, tạo thủ công, thao tác bit như các phép toán.

Lớp này đã được thêm vào số JDK1.1.

Nhưng tôi không biết có sự sẵn có như vậy được tích hợp với thư viện C++. Có thể có API mở rộng từ bên thứ ba.

Các vấn đề liên quan