11

Nếu tôi có tổng số sản phẩm như z*a + z*b + z*c + ... + z*y, có thể di chuyển hệ số z, giống nhau, trước dấu ngoặc đơn: z(a + b + c + ... y).Di chuyển ra trước dấu ngoặc với XOR

Tôi muốn biết làm thế nào nó có thể (nếu có) để làm các thủ thuật tương tự nếu bitwise XOR được sử dụng thay vì phép nhân. z^a + z^b + ... z^y -> z^(a + b + ... + y)

Có lẽ a, b, c ... nên được xử lý trước, chẳng hạn như được phủ nhận hợp pháp hoặc điều gì khác, trước khi thêm? z có thể thay đổi, do đó, tiền xử lý, nếu cần, không nên phụ thuộc vào giá trị z cụ thể.

+3

AFAIK XOR không phân phối trên modulo 2^32, vì vậy bạn không thể làm điều đó. – harold

+0

Tiền xử lý từ a đến y bằng cách XOR chúng với z sẽ không chậm hơn so với việc phủ nhận qua y. Đó là một hoạt động tầm thường cho một CPU. –

+1

Âm thanh như một bài tập chứng minh toán học tốt đẹp: "Chứng minh rằng không có hàm' f_z (x) 'sao cho' Σ (z^x_i) = z^Σ f_z (x_i) 'cho tất cả x_i." – MSalters

Trả lời

6

Từ Wikipedia:

Distributivity: không có chức năng nhị phân, thậm chí không phải với bản thân

Vì vậy, không có, không may, bạn không thể làm bất cứ điều gì như thế với XOR.

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