Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: ý nghĩa thực tiễn cảu các phép toán AND, OR,XOR,NOT

  1. #1
    Ngày gia nhập
    01 2012
    Nơi ở
    Hà Tĩnh
    Bài viết
    25

    Post ý nghĩa thực tiễn cảu các phép toán AND, OR,XOR,NOT

    các bạn có thể cho mình biết ý nghĩa thực tiễn của các phép toán logic trong ngôn ngữ C được không?
    khi nào thì chúng ta sử dụng các phép toán đó?
    ví dụ: làm sao chúng ta có thể viết phép toán XOR từng bit (mình đoán là thể) trong bài toán tráo đổi 2 số:
    C Code:
    1. void Swap(int &a,int &b)
    2. {
    3.      a^=b^=a^b;
    4. }

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Nếu code bình thường thì ko cần. Khi nào cần realtime, tốc độ cao ( như game, xử lý ảnh ) thì dùng các phép toán đó sẽ tối ưu hơn. Bởi vì cpu thực hiện các phép toán logic nhanh hơn cộng, trừ. Ví dụ nhân/chia cho lũy thừa của của 2 thì phép dịch bit trái/phải nhanh hơn phép nhân/chia cả mấy chục lần. Phép xor trong 1 số trường hợp có thể thay thế cho phép so sánh bằng. Nói chung là tuy cơ mà ứng biến, linh động là chính thôi. Bạn ko nên máy móc, cứ trường hợp A là làm cách a, trường hợp B là làm cách b. Bạn lập trình cho máy chứ đừng để máy lập trình cho bạn.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    01 2012
    Nơi ở
    Hà Tĩnh
    Bài viết
    25

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Nếu code bình thường thì ko cần. Khi nào cần realtime, tốc độ cao ( như game, xử lý ảnh ) thì dùng các phép toán đó sẽ tối ưu hơn. Bởi vì cpu thực hiện các phép toán logic nhanh hơn cộng, trừ. Ví dụ nhân/chia cho lũy thừa của của 2 thì phép dịch bit trái/phải nhanh hơn phép nhân/chia cả mấy chục lần. Phép xor trong 1 số trường hợp có thể thay thế cho phép so sánh bằng. Nói chung là tuy cơ mà ứng biến, linh động là chính thôi. Bạn ko nên máy móc, cứ trường hợp A là làm cách a, trường hợp B là làm cách b. Bạn lập trình cho máy chứ đừng để máy lập trình cho bạn.

    cảm ơn lời khuyên bổ ích của bạn, nhưng bạn có thể giải thích cho mình thuật toán tráo đổi đó không??

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bản chất của xor là nếu áp dụng 2 lần cho cùng 1 số thì sẽ được kết quả ban đầu. Giả sử a^b sẽ ra c. Lấy c ^ b sẽ lại ra a. Tóm lại là (a ^ b) ^ b = a. Bạn áp dụng công thức đó vào đoạn code là sẽ hiểu tại sao nó hoán vị nhau được.

    p/s: trong các phép hoán đổi đều có 1 biến tạm để lưu giá trị. Trong đoạn code của bạn cũng có biến tạm mà ko phải khai báo đó: a^=b^=a^b;
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 24-03-2012 lúc 11:38 PM.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

Các đề tài tương tự

  1. Liên thông trung cấp nghề,cao đẳng nghề lên đại học chính quy 2012
    Gửi bởi cafetrungnguyen trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 31-07-2012, 02:03 PM
  2. Trả lời: 0
    Bài viết cuối: 02-08-2011, 03:26 PM
  3. Nhập ký tự đầu tiên của một nghề sẽ xuất ra nghề đó bằng việc sử dụng enum?
    Gửi bởi sasadudu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 05-03-2011, 09:25 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn