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

Đề tài: phép & (and ) trong lập trình C có tác dụng gì?

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Question phép & (and ) trong lập trình C có tác dụng gì?

    Có người nói :
    PHP Code:
    Để kiểm tra một số dương có phải là số lẻ không thông thường ta dùng câu lệnh:
    CODE
    if (n%== 1) {/*làm gì đó*/}

    Tuy nhiên có một cách làm tối ưu hơn cho vấn đề trên đó là câu lệnh:
    CODE
    if (n&1) {/*làm gì đó*/}

    Đây là cách AND bit nhị phânn&1 sẽ cho gí trị của bit cuối cùngNếu bít cuối cùng là 1 thì n&1 ngược lại sẽ bằng 0. 
    Còn ở trong các giáo trình thì lại viết hoàn toàn khác !

    nếu a=7 b=14 c=a&b
    thì c = 6

    g giáo trình thì viết là nó là 1 phép tính và trả về số nguyên có cùng kick thước (số bit) với 2 toán hạng




    ???????????????????????????????????????????????


    Mong các bạn trong cộng đồng giúp đỡ !

    Thân
    langman

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Thấy cũng đúng chứ, có sai gì đâu, thắc mắc ở đây là gì vậy.

    Đây nhé:

    Số 7 chuyển sang nhị phân là: 0111 (Với 4 bit)
    Số 14 chuyển sang nhị phân là: 1110 (Với 4 bit)

    Khi sử dụng phép AND(&) thì ta sẽ thu được: 0110

    0110 chính là số 6 trong hệ Decimal mà, sai gì đâu ta?

    ---------------------------------
    Còn chuyện xác định chẵn lẽ cũng vậy:
    (Hình như Dr cũng không để ý vụ này ha)

    Một số lẻ sẽ có bit cuối cùng là 1
    Một số chẵn có bít cuối cùng là 0
    (Các bạn kiểm tra lại thông tin này, xem có chính xác không nhé)

    ở đây Dr chỉ lấy ví dụ là một một số chỉ có 4 bít thôi, nó sẽ có dạng:
    Số lẻ: xxx1
    Số chẵn: xxx0
    Số 1 chuyển sang nhị phân là 0001

    Vậy ta làm một phép AND(&) 1, thì chắc chắn thu được 0001 nếu là số lẻ, và 0000 nếu là số chẵn. Đúng chứ có sai gì đâu, vấn đề nằm ở chỗ phải hiểu nó.

    Thế nào, như thế nghe có vẻ là rõ rồi chứ?
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

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