Để ở trên cùng một trang, hãy giả sử sizeof (int) = 4 và sizeof (long) = 8.Hiệu chỉnh bitshifting một mảng int?
Cho một mảng các số nguyên, phương pháp hiệu quả để bithift một cách hợp lý mảng thành trái hoặc phải là gì?
Tôi đang dự tính một biến phụ trợ, chẳng hạn như một biến dài, sẽ tính toán bithift cho cặp đầu tiên của các phần tử (chỉ mục 0 và 1) và đặt phần tử đầu tiên (0). Tiếp tục trong thời trang này, bithift cho các phần tử (chỉ mục 1 và 2) sẽ là máy tính, và sau đó chỉ số 1 sẽ được thiết lập.
Tôi nghĩ đây thực sự là một phương pháp khá hiệu quả, nhưng có những hạn chế. Tôi không thể bithift lớn hơn 32 bit. Tôi nghĩ rằng việc sử dụng nhiều biến phụ trợ sẽ hoạt động, nhưng tôi đang hình dung đệ quy ở đâu đó dọc theo dòng.
@nn - một chút không rõ những gì bạn đang ở đây. Bạn muốn làm gì với bất kỳ dữ liệu nào bị dịch chuyển và bị mất? Bạn có muốn thay đổi một cách hợp lý hoặc thay đổi số liệu không? Hoặc là bạn chỉ sau khi đọc một lựa chọn các bit dữ liệu nhị phân một cách ngẫu nhiên? Ví dụ, đọc một int 4 byte từ vị trí bit 27 đến bit 59 từ một luồng dữ liệu nhị phân 100 byte? – ChrisBD
@ChrisBD: Xin lỗi câu hỏi hay. Thay đổi hợp lý. Tôi đang thực sự thao tác các số nguyên lớn được biểu diễn dưới dạng một mảng int, trong đó mỗi int tương ứng với một chữ số trong cơ số 2^(sizeof (int) * 8) = 2^32. – snap
Tôi đã tìm kiếm một vài tài liệu tham khảo và tôi chưa thấy bất kỳ mẹo nào cho điều này, tôi đoán cách rõ ràng là cách duy nhất: -/ – fortran