Vui vẻ cùng Bit operations
programming
62
White

Linh Tran Tuan viết ngày 09/02/2018

Bit operations

Các phép toán trên bit luôn give best performance và tối giản hóa bộ nhớ. Hôm nay mình viết bài này note lại cho mọi người xài chơi, có đủ cấp độ.

Zero Space Swap

x ^= y;
y ^= x;
x ^= y;

Xóa đi bit 1 cuối cùng hoặc kiểm tra một số N có phải là power of 2

N = N & (N-1); // Xóa đi bit 1 cuối cùng
N == N & (N-1); // Kiểm tra power of 2
// Thử nghĩ về việc kiểm tra power of 4 xem :)

Kiểm tra chẵn lẻ

N & 1 == 0 // chẵn
N & 1 == 1 // lẻ

Nhân 2^K

N <<= K

Chia cho 2^K

N >>= K

Chia 4 dư mấy

N & 3

Chia 8 dư mấy

N & 7

Chia 2^K dư mấy

N & ((1 << K) - 1)

Bật bit thứ K của số N

N = N | (1 << K)

Tắt bit thứ K của số N

Golang: N &= ^(1 << K)
C/Java: N &= ~(1 << K)

Max và min (thanks anh @huydx)

min(x,y) = y ^ ((x ^ y) & -(x < y))
max(x,y) = y ^ ((x ^ y) & -(x > y))

Harder: Ứng dụng trong Binary index tree

Lấy ra Least significant bit

N & -N

Trên đây mình kể ra mấy trò tiêu biểu hay xài. Còn nhiều trò nữa ở link này: BitHacks

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Linh Tran Tuan

4 bài viết.
49 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
41 23
Một trong những điểm thú vị nhất khi phát triển các hệ thống Business là lập báo cáo doanh thu. Mình đã từng maintain hệ thống cảnh báo sớm của Cụ...
Linh Tran Tuan viết 4 tháng trước
41 23
White
22 3
Introduction Buffering (buffered IO) là một trong những kỹ thuật kinh điển khi chúng ta cần đọc/ghi dữ liệu. Trong bài viết này mình sẽ đi sâu hơn...
Linh Tran Tuan viết 4 tháng trước
22 3
White
13 0
mssqlx viết tắt của masterslave sqlx (tên mình tự đặt nên hơi chuối) TL;DR Mình còn nhớ trước khi xây dựng backend của dự án iParking, mình đã p...
Linh Tran Tuan viết 4 tháng trước
13 0
Bài viết liên quan
White
49 21
Luận về comment code (Phong cách kiếm hiệp) Comment code luôn là vấn đề gây tranh cãi sứt đầu mẻ trán trong giới võ lâm. Xưa kia, thuở còn mài đít...
Huy Hoàng Phạm viết hơn 2 năm trước
49 21
White
10 0
Không gì đẹp bằng nụ cười khi đôi mắt e lệ nhìn xuống. Victor Hugo Các bạn có thể đọc bài viết gốc tại (Link) Tò mò khi tìm hiểu hoạt động của ...
Đào Văn Hùng viết 3 tháng trước
10 0
White
20 2
Khi các ban cố gắng học bất cứ ngôn ngữ cũng như coding skill nào, họ thường gặp một số thách thức tương tự như: Một số khái niệm có thể gây nhầm...
Hoàng Nguyễn viết gần 2 năm trước
20 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
4 bài viết.
49 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!