Đến nội dung


Hình ảnh
- - - - -

Hỏi về LISP


  • Please log in to reply
22 replies to this topic

#21 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 22 March 2010 - 08:30 AM

Help của Acad:
(logand [int int...])
Returns the result of the logical bitwise AND of a list of integers
Examples
Command: (logand 7 15 3)
3

Bạn phải có kiến thức về hệ đếm và các phép toán logic. Hàm logand làm việc như sau:
- Chuyển toàn bộ argument sang hệ nhị phân
- Thực hiện phép toán AND cho từng bit
- Trả về kết quả tổng hợp

Ví dụ trên:
7 = 0111
15 = 1111
3 = 0011
kQ: 0011 = 3

Xin chào cả nhà
Đọc bài viết của bác ssg, có mấy chổ mà Tue_NV chưa hiểu được về hàm logand. Xin các bác chỉ giúp

Command: (logand 7 15 3)
3

Hàm logand làm việc như sau:
1./ Chuyển toàn bộ argument sang hệ nhị phân
2./ Thực hiện phép toán AND cho từng bit
3./ Trả về kết quả tổng hợp

Ở bước 1 : Chuyển toàn bộ argument sang hệ nhị phân thì mình đã hiểu
Bước 2 và bước 3 thực sự là không hiểu lắm

Ví dụ trên:
7 = 0111
15 = 1111
3 = 0011
Đến đây mình đã hiểu. Nhưng tại sao kết quả trả về như dưới đây thì chưa hiểu lắm
kQ: 0011 = 3
Và mình ứng dụng hàm logand và logior trong những trường hợp nào? Thực sự là chưa hiểu lắm
Mong các bác chỉ giúp.
Tue_NV xin chân thành cảm ơn.
  • 0

#22 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 22 March 2010 - 10:23 AM

Xin chào cả nhà
Đọc bài viết của bác ssg, có mấy chổ mà Tue_NV chưa hiểu được về hàm logand. Xin các bác chỉ giúp

Command: (logand 7 15 3)
3

Hàm logand làm việc như sau:
1./ Chuyển toàn bộ argument sang hệ nhị phân
2./ Thực hiện phép toán AND cho từng bit
3./ Trả về kết quả tổng hợp

Ở bước 1 : Chuyển toàn bộ argument sang hệ nhị phân thì mình đã hiểu
Bước 2 và bước 3 thực sự là không hiểu lắm

Ví dụ trên:
7 = 0111
15 = 1111
3 = 0011
Đến đây mình đã hiểu. Nhưng tại sao kết quả trả về như dưới đây thì chưa hiểu lắm
kQ: 0011 = 3
Và mình ứng dụng hàm logand và logior trong những trường hợp nào? Thực sự là chưa hiểu lắm
Mong các bác chỉ giúp.
Tue_NV xin chân thành cảm ơn.

Chào bác Tue_NV,
Ví dụ của bác SSG là khá rõ rồi đó, bác có thể xem thêm ví dụ khác của help sẽ rõ hơn.
Mình tuy chưa hiểu rõ về ứng dụng của các hàm này, nhưng về nội dung hàm thì theo như bác SSG giải thích thì mình hiểu như sau:
Bước 1: như bác đã rõ
Bước 2: Bác thiết lập hàm and cho từng bit của các đối số. Cụ thể là:
- bit thứ nhất, bác có (and 0 1 0) trả về giá tri là 0
- bit thứ hai bác có (and 1 1 0) cũng trả về giá trị 0
- bit thứ ba bác có (and 1 1 1) trả về giá trị 1
- bit thứ tư bác có (and 1 1 1) cũng trả về giá trị 1
Bước 3: Lấy kết quả tổng hợp của cả bốn bit, bác có 0011
Chuyển sang giá trị số trong cơ số 10 bác có 0011 = 3

Xét tiếp ví dụ thứ hai của hàm (logand ...) trong help:
(logand 2 3 15) trả về giá trị 2 vì:
Bước 1: 2 = 0010; 3 = 0011 ; 15 = 1111
Bước 2:
- bit thư nhất: (and 0 0 1) trả về 0
- bit thứ hai : (and 0 0 1) trả về 0
- bit thứ ba: (and 1 1 1) Trả về 1
- bit thứ tư (and 0 1 1) Trả về 0
Bước 3 : Kết quả là 0010 = 2

Ví dụ 3: (logand 8 3 4) trả về giá trị 0. Bác kiểm lại nhé.

Tương tự cái hàm (logior ....) cũng được hiểu như hàm (logand ....) bác ạ, chỉ khác hàm logic lúc này là hàm OR mà thôi.
Tỷ như (logior 8 3 4) sẽ trả về giá trị 15. vì (or 1 0 0) trả về 1 chứ không phải 0.

Việc mình hiểu như vậy, nếu chưa đúng mong các bác chỉ dạy thêm.
Ứng dụng của nó thì thiệt tình mình thấy nó khá rậm rì rắc rối. Chỉ nguyên cái việc chuyển đổi hệ cơ số đã thấy muốn loạn đầu rồi nên chưa tìm hiểu kỹ được. Bác nào đã từng xài hãy cho một vài ví dụ ứng dụng để anh em có thêm cái hứng mà mót hỉ. Chớ mót về hổng xài e nó chiếm mất chỗ trong bộ nhớ, dễ làm chập IC lắm các bác hỉ......
Chúc bác và toàn thể anh em trên diễn đàn luôn mạnh và vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#23 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 22 March 2010 - 10:49 AM

Xin chào cả nhà
Đọc bài viết của bác ssg, có mấy chổ mà Tue_NV chưa hiểu được về hàm logand. Xin các bác chỉ giúp

Command: (logand 7 15 3)
3

Hàm logand làm việc như sau:
1./ Chuyển toàn bộ argument sang hệ nhị phân
2./ Thực hiện phép toán AND cho từng bit
3./ Trả về kết quả tổng hợp

Ở bước 1 : Chuyển toàn bộ argument sang hệ nhị phân thì mình đã hiểu
Bước 2 và bước 3 thực sự là không hiểu lắm

Ví dụ trên:
7 = 0111
15 = 1111
3 = 0011
Đến đây mình đã hiểu. Nhưng tại sao kết quả trả về như dưới đây thì chưa hiểu lắm
kQ: 0011 = 3
Và mình ứng dụng hàm logand và logior trong những trường hợp nào? Thực sự là chưa hiểu lắm
Mong các bác chỉ giúp.
Tue_NV xin chân thành cảm ơn.

Tue_NV tham khảo :
Hình đã gửi
  • 1