Một số thời gian trước đây tôi đã nhìn thấy một nơi nào đó một thủ thuật để thực hiện thao tác modulo bằng cách sử dụng toán tử bit. Nhưng bây giờ tôi không thể theo bất kỳ cách nào để thực hiện hoạt động đúng đắn. Bất cứ ai cũng biết làm thế nào để làm điều đó? Từ những gì tôi nhớ nó nhanh hơn sử dụng%.Các cách khác để thực hiện thao tác modulo
5
A
Trả lời
8
Các "lừa" là nhị phân AND
một giá trị với 1. Bất kỳ số lẻ phải có bit đầu tiên thiết lập để 1.
Vì vậy
var foo = 7;
if(foo & 1) { // true
}
Sử dụng toán tử AND có một hiệu suất tốt hơn trong gần như tất cả các nền tảng/trình duyệt.
for(var loop = 0; loop < 10; loop++) {
if(loop & 1) {
console.log('I am ', loop, ' and I am odd!');
}
}
8
Bạn có thể làm modulo 2^k (công suất 2) bằng cách ANDing giá trị của bạn bằng (2^k) -1.
+1
+1 nhưng chỉ cho số dương –
Các vấn đề liên quan
- 1. Cách thực hiện các thao tác ngày trong hibernate
- 2. Cách thực hiện thao tác hợp nhất data.table
- 3. Làm cách nào để thực hiện thao tác 'hoàn tác' trong ứng dụng cửa sổ .net?
- 4. Làm cách nào để thực hiện các thao tác khi phát âm thanh trong iPhone?
- 5. Làm cách nào để thực hiện các thao tác khác nhau trong bản cập nhật của Observer() trong Java?
- 6. cách thực hiện thao tác grep trên tất cả các tệp trong thư mục
- 7. Thực hiện thao tác trên đường dẫn tệp trong XSLT
- 8. Rails 3. Cách thực hiện thao tác lưu trên tất cả các bản ghi?
- 9. Thực hiện các thao tác trên một tập con bằng cách sử dụng bảng dữ liệu
- 10. Làm cách nào để thực hiện thao tác ma trận 8 x 8 bằng SSE?
- 11. Ngôn ngữ lắp ráp - Cách thực hiện Modulo?
- 12. Làm cách nào để thực hiện thao tác bit trong glsl
- 13. Các mẫu thao tác Bytecode
- 14. Thao tác thao tác không kích hoạt
- 15. Cách tốt nhất để thực hiện thao tác Bit Field bằng Python là gì?
- 16. Làm cách nào để thực hiện các thao tác trên các đối sánh Regre Backreference trong Javascript?
- 17. Làm cách nào để thiết lập khóa cho thao tác đọc-thao tác ghi?
- 18. Làm cách nào để thực hiện các thao tác lịch trong Java GWT? Cách thêm ngày vào một ngày?
- 19. C#: Thực hiện các thao tác trên GPU, không phải CPU (tính Pi)
- 20. MS Access: Không đủ bộ nhớ để thực hiện thao tác này
- 21. Tại sao ExecutorService bế tắc khi thực hiện các thao tác HashMap?
- 22. Thực hiện thao tác với các địa chỉ 64 bit trong C + MinGW32
- 23. Làm cách nào để thực hiện thao tác nhị phân hai chiều giữa các phần tử của hai vùng chứa?
- 24. Làm cách nào để thực hiện các thao tác yêu cầu OAuth trong một công việc cron GAE?
- 25. Thực hiện thao tác grep trong các tệp tar mà không cần giải nén
- 26. Sử dụng ứng dụng khách Jersey để thực hiện thao tác POST
- 27. Thao tác các tệp MIDI bằng Python
- 28. Mẫu thao tác chuỗi
- 29. JTabbedPane: Các thao tác được thực hiện trước khi hiển thị tab đã chọn
- 30. Cách trì hoãn trước khi thực hiện một thao tác trong WPF
http://en.wikipedia.org/wiki/Modulo_operation#Performance_issues - cho quyền hạn của 2. –
Câu hỏi hay, tôi đã kiểm tra ở đây: http://jsperf.com/js-modulo và câu trả lời có vẻ tốt! – TTT