Kỹ thuật nào sau đây là lựa chọn tốt nhất để chia số nguyên cho 2 và tại sao?
Kỹ thuật 1:
x = x >> 1;
Kỹ thuật 2:
x = x / 2;
Đây x
là một số nguyên.
x = x >>> 1
. Cũng lưu ý rằng tùy thuộc vào nền tảng và trình biên dịch, có thể khá hợp lý để tối ưu hóa thủ công các phép chia và phép nhân bằng cách sử dụng ca. - Suy nghĩ về các bộ điều khiển vi mô, ví dụ, hỗ trợ ALU trực tiếp cho phép nhân.
x /= 2
bởi vì x >>= 1
trông quá giống như liên kết đơn âm;)
x = x / 2
thay vì x /= 2
. Có thể ưu tiên chủ quan :)
⬜=
kết hợp, chúng nên được sử dụng bất cứ khi nào có thể. Nó loại bỏ nhiễu và nhấn mạnh vào thực tế đã x
được sửa đổi , trong khi =
toán tử chung cho thấy rằng nó có một giá trị hoàn toàn mới độc lập với giá trị cũ. - Luôn tránh các nhà khai thác kết hợp (để nó có thể đọc được để một người chỉ biết khai thác toán học) có thể có quan điểm của mình là tốt, nhưng sau đó bạn sẽ cần phải từ bỏ những cực kỳ hữu ích ++
, --
, +=
, quá.
x
một lần nữa, thì không phù hợp theo cách này: nó phải làx >>= 1
hoặcx /= 2
, tùy thuộc vào những gì bạn định thể hiện với thao tác. Không phải vì nó nhanh hơn (bất kỳ trình biên dịch hiện đại nào cũng sẽ biên dịch tất cả các biến thể tương đương thành giống hệt nhau, lắp ráp nhanh) nhưng vì nó ít gây nhầm lẫn hơn.