860 lines
No EOL
18 KiB
HTML
860 lines
No EOL
18 KiB
HTML
<!DOCTYPE HTML>
|
|
<HTML LANG="en-us"
|
|
><HEAD
|
|
><TITLE
|
|
>logand, logandc1, logandc2, logeqv, logior, lognand, lognor, lognot, logorc1, logorc2, logxor | Common Lisp Nova Spec</TITLE
|
|
><META CHARSET="US-ASCII"
|
|
><LINK REL="canonical" HREF="f_logand.html"
|
|
><LINK REL="next" HREF="f_logbitp.html" TYPE="text/html" TITLE="logbitp"
|
|
><LINK REL="prev" HREF="v_boole-1.html" TYPE="text/html" TITLE="boole-1, boole-2, boole-and, boole-andc1, boole-andc2, boole-c1, boole-c2, boole-clr, boole-eqv, boole-ior, boole-nand, boole-nor, boole-orc1, boole-orc2, boole-set, boole-xor"
|
|
><LINK REL="up" HREF="12_2_Numbers_Dictionary.html" TYPE="text/html" TITLE="12.2 Numbers Dictionary"
|
|
><LINK REL="start" HREF="index.html" TYPE="text/html" TITLE="Common Lisp Nova Spec"
|
|
><META NAME="VIEWPORT" CONTENT="width=device-width, initial-scale=1.0"
|
|
><LINK REL="STYLESHEET" HREF="dpans.css%3F3909942064.css"
|
|
><SCRIPT SRC="dpans.js%3F3909942064"
|
|
></SCRIPT
|
|
><SCRIPT SRC="apropos.js%3F3909942064"
|
|
></SCRIPT
|
|
></HEAD
|
|
><BODY
|
|
><DIV
|
|
><DIV CLASS="topnav"
|
|
><DIV CLASS="breadcrumb"
|
|
><SPAN CLASS="breadcrumb-item"
|
|
><A HREF="index.html"
|
|
>Common Lisp Nova Spec</A
|
|
></SPAN
|
|
> <SPAN CLASS="breadcrumb-item"
|
|
>→ <A HREF="12_Numbers.html"
|
|
>12. Numbers</A
|
|
></SPAN
|
|
> <SPAN CLASS="breadcrumb-item"
|
|
>→ <A HREF="12_2_Numbers_Dictionary.html"
|
|
>12.2 Numbers Dictionary</A
|
|
></SPAN
|
|
> <SPAN CLASS="breadcrumb-item"
|
|
>→ <A HREF="f_logand.html"
|
|
>logand, logandc1, logandc2, logeqv, logior, lognand, lognor, lognot, logorc1, logorc2, logxor</A
|
|
></SPAN
|
|
></DIV
|
|
><DIV CLASS="apropos"
|
|
><DIV CLASS="apropos-io"
|
|
><A HREF="v_boole-1.html" CLASS="prev"
|
|
>←</A
|
|
><SPAN ID="apropos-label"
|
|
>Apropos </SPAN
|
|
><INPUT ID="apropos" AUTOFOCUS="AUTOFOCUS" PLACEHOLDER="Type here to search" ONINPUT="aproposInput(this);" ONKEYUP="aproposKeyup(event);" ONCHANGE="aproposChange(this);" ONFOCUS="aproposFocus(this);" ONFOCUSOUT="aproposFocusout(this);"
|
|
><A HREF="f_logbitp.html" CLASS="next"
|
|
>→</A
|
|
></DIV
|
|
><DIV ID="apropos-res"
|
|
></DIV
|
|
></DIV
|
|
></DIV
|
|
><DIV CLASS="matter"
|
|
><DIV CLASS="com"
|
|
><DIV CLASS="begincom"
|
|
><HR
|
|
><TABLE WIDTH="100%" CELLSPACING="0" CELLPADDING="0"
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="100%" CLASS="name"
|
|
><SPAN CLASS="idx" DATA-KIND="idxref" DATA-TERM="logand, logandc1, logandc2, logeqv, logior, lognand, lognor, lognot, logorc1, logorc2, logxor"
|
|
></SPAN
|
|
><B
|
|
>logand, logandc1, logandc2, logeqv, logior, lognand, lognor, lognot, logorc1, logorc2, logxor</B
|
|
></TD
|
|
><TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="0" NOWRAP="NOWRAP" CLASS="ftype"
|
|
><I
|
|
>Function</I
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
></DIV
|
|
><UL CLASS="subtoc"
|
|
></UL
|
|
><DL
|
|
><DT
|
|
><B
|
|
>Syntax</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><B
|
|
>logand</B
|
|
> <SPAN CLASS="cmtt"
|
|
>&rest</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integers</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>logandc1</B
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-1</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-2</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>logandc2</B
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-1</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-2</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>logeqv</B
|
|
> <SPAN CLASS="cmtt"
|
|
>&rest</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integers</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>logior</B
|
|
> <SPAN CLASS="cmtt"
|
|
>&rest</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integers</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>lognand</B
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-1</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-2</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>lognor</B
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-1</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-2</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>lognot</B
|
|
> <SPAN CLASS="cmssi"
|
|
>integer</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>logorc1</B
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-1</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-2</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>logorc2</B
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-1</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integer-2</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>logxor</B
|
|
> <SPAN CLASS="cmtt"
|
|
>&rest</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>integers</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result-integer</SPAN
|
|
></P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Arguments and Values</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><VAR CLASS="param"
|
|
>integers</VAR
|
|
> — <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integers</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
><VAR CLASS="param"
|
|
>integer</VAR
|
|
> — an <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integer</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
><VAR CLASS="param"
|
|
>integer-1</VAR
|
|
> — an <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integer</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
><VAR CLASS="param"
|
|
>integer-2</VAR
|
|
> — an <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integer</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
><VAR CLASS="param"
|
|
>result-integer</VAR
|
|
> — an <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integer</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Description</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>The <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>functions</EM
|
|
></A
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logandc1</B
|
|
></A
|
|
>, <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logandc2</B
|
|
></A
|
|
>, <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logand</B
|
|
></A
|
|
>, <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logeqv</B
|
|
></A
|
|
>, <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logior</B
|
|
></A
|
|
>, <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>lognand</B
|
|
></A
|
|
>, <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>lognor</B
|
|
></A
|
|
>, <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>lognot</B
|
|
></A
|
|
>, <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logorc1</B
|
|
></A
|
|
>, <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logorc2</B
|
|
></A
|
|
>, and <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logxor</B
|
|
></A
|
|
> perform bit-wise logical operations on their <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>arguments</EM
|
|
></A
|
|
>, that are treated as if they were binary. </P
|
|
><P CLASS="j"
|
|
>Figure 12–18 lists the meaning of each of the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>functions</EM
|
|
></A
|
|
>. Where an ‘identity’ is shown, it indicates the <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#yield"
|
|
><EM CLASS="term"
|
|
>yielded</EM
|
|
></A
|
|
> by the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> when no <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>arguments</EM
|
|
></A
|
|
> are supplied.</P
|
|
><FIGURE CLASS="boxfig"
|
|
><DIV CLASS="figbody"
|
|
><TABLE CELLSPACING="0" CELLPADDING="0" RULES="GROUPS" STYLE="margin: 1ex 0" WIDTH="100%"
|
|
><THEAD
|
|
><TR
|
|
><TH ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
><B
|
|
>Function</B
|
|
></TH
|
|
><TH ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <B
|
|
>Identity</B
|
|
></TH
|
|
><TH ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <B
|
|
>Operation performed</B
|
|
></TH
|
|
></TR
|
|
></THEAD
|
|
><TBODY
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logandc1</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
> — </SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>and</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>complement</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>of</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-1</VAR
|
|
> <SPAN CLASS="cmr"
|
|
>with</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-2</VAR
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logandc2</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
> — </SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>and</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-1</VAR
|
|
> <SPAN CLASS="cmr"
|
|
>with</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>complement</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>of</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-2</VAR
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logand</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <CODE CLASS="f"
|
|
>-1</CODE
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>and</SPAN
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logeqv</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <CODE CLASS="f"
|
|
>-1</CODE
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>equivalence</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>(exclusive</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>nor)</SPAN
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logior</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <CODE CLASS="f"
|
|
>0</CODE
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>inclusive</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>or</SPAN
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>lognand</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
> — </SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>complement</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>of</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-1</VAR
|
|
> <SPAN CLASS="cmr"
|
|
>and</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-2</VAR
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>lognor</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
> — </SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>complement</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>of</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-1</VAR
|
|
> <SPAN CLASS="cmr"
|
|
>or</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-2</VAR
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>lognot</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
> — </SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>complement</SPAN
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logorc1</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
> — </SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>or</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>complement</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>of</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-1</VAR
|
|
> <SPAN CLASS="cmr"
|
|
>with</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-2</VAR
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logorc2</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
> — </SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>or</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-1</VAR
|
|
> <SPAN CLASS="cmr"
|
|
>with</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>complement</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>of</SPAN
|
|
> <VAR CLASS="param"
|
|
>integer-2</VAR
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <A HREF="f_logand.html" CLASS="funref"
|
|
><B
|
|
>logxor</B
|
|
></A
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <CODE CLASS="f"
|
|
>0</CODE
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>exclusive</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>or</SPAN
|
|
></TD
|
|
></TR
|
|
></TBODY
|
|
></TABLE
|
|
></DIV
|
|
><FIGCAPTION CLASS="caption"
|
|
><B
|
|
>Figure 12–18. Bit-wise Logical Operations on Integers</B
|
|
></FIGCAPTION
|
|
></FIGURE
|
|
><P CLASS="j"
|
|
>Negative <VAR CLASS="param"
|
|
>integers</VAR
|
|
> are treated as if they were in two’s-complement notation.</P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Examples</B
|
|
></DT
|
|
><DD
|
|
><PRE CLASS="screen"
|
|
> (logior 1 2 4 8) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 15
|
|
(logxor 1 3 7 15) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 10
|
|
(logeqv) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> -1
|
|
(logand 16 31) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 16
|
|
(lognot 0) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> -1
|
|
(lognot 1) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> -2
|
|
(lognot -1) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 0
|
|
(lognot (1+ (lognot 1000))) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 999
|
|
|
|
;;; In the following example, m is a mask. For each bit in
|
|
;;; the mask that is a 1, the corresponding bits in x and y are
|
|
;;; exchanged. For each bit in the mask that is a 0, the
|
|
;;; corresponding bits of x and y are left unchanged.
|
|
(flet ((show (m x y)
|
|
(format t "~%m = #o~6,'0O~%x = #o~6,'0O~%y = #o~6,'0O~%"
|
|
m x y)))
|
|
(let ((m #o007750)
|
|
(x #o452576)
|
|
(y #o317407))
|
|
(show m x y)
|
|
(let ((z (logand (logxor x y) m)))
|
|
(setq x (logxor z x))
|
|
(setq y (logxor z y))
|
|
(show m x y))))
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
> m = #o007750
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
> x = #o452576
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
> y = #o317407
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
>
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
> m = #o007750
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
> x = #o457426
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
> y = #o312557
|
|
<SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> NIL</PRE
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Exceptional Situations</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>Should signal <A HREF="t_type-error.html" CLASS="typeref"
|
|
><B
|
|
>type-error</B
|
|
></A
|
|
> if any argument is not an <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integer</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>See Also</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><A HREF="f_boole.html" CLASS="funref"
|
|
><B
|
|
>boole</B
|
|
></A
|
|
></P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Notes</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><CODE CLASS="f"
|
|
>(logbitp <VAR CLASS="param"
|
|
>k</VAR
|
|
> -1)</CODE
|
|
> returns <A HREF="26_1_Glossary.html#true"
|
|
><EM CLASS="term"
|
|
>true</EM
|
|
></A
|
|
> for all values of <VAR CLASS="param"
|
|
>k</VAR
|
|
>. </P
|
|
><P CLASS="j"
|
|
>Because the following functions are not associative, they take exactly two arguments rather than any number of arguments.</P
|
|
><PRE CLASS="screen"
|
|
>(lognand <VAR CLASS="param"
|
|
>n1</VAR
|
|
> <VAR CLASS="param"
|
|
>n2</VAR
|
|
>) <SPAN CLASS="cmsy"
|
|
><SPAN STYLE="font-size:16px;vertical-align:-2px"
|
|
>≡</SPAN
|
|
></SPAN
|
|
> (lognot (logand <VAR CLASS="param"
|
|
>n1</VAR
|
|
> <VAR CLASS="param"
|
|
>n2</VAR
|
|
>))
|
|
(lognor <VAR CLASS="param"
|
|
>n1</VAR
|
|
> <VAR CLASS="param"
|
|
>n2</VAR
|
|
>) <SPAN CLASS="cmsy"
|
|
><SPAN STYLE="font-size:16px;vertical-align:-2px"
|
|
>≡</SPAN
|
|
></SPAN
|
|
> (lognot (logior <VAR CLASS="param"
|
|
>n1</VAR
|
|
> <VAR CLASS="param"
|
|
>n2</VAR
|
|
>))
|
|
(logandc1 <VAR CLASS="param"
|
|
>n1</VAR
|
|
> <VAR CLASS="param"
|
|
>n2</VAR
|
|
>) <SPAN CLASS="cmsy"
|
|
><SPAN STYLE="font-size:16px;vertical-align:-2px"
|
|
>≡</SPAN
|
|
></SPAN
|
|
> (logand (lognot <VAR CLASS="param"
|
|
>n1</VAR
|
|
>) <VAR CLASS="param"
|
|
>n2</VAR
|
|
>)
|
|
(logandc2 <VAR CLASS="param"
|
|
>n1</VAR
|
|
> <VAR CLASS="param"
|
|
>n2</VAR
|
|
>) <SPAN CLASS="cmsy"
|
|
><SPAN STYLE="font-size:16px;vertical-align:-2px"
|
|
>≡</SPAN
|
|
></SPAN
|
|
> (logand <VAR CLASS="param"
|
|
>n1</VAR
|
|
> (lognot <VAR CLASS="param"
|
|
>n2</VAR
|
|
>))
|
|
(logiorc1 <VAR CLASS="param"
|
|
>n1</VAR
|
|
> <VAR CLASS="param"
|
|
>n2</VAR
|
|
>) <SPAN CLASS="cmsy"
|
|
><SPAN STYLE="font-size:16px;vertical-align:-2px"
|
|
>≡</SPAN
|
|
></SPAN
|
|
> (logior (lognot <VAR CLASS="param"
|
|
>n1</VAR
|
|
>) <VAR CLASS="param"
|
|
>n2</VAR
|
|
>)
|
|
(logiorc2 <VAR CLASS="param"
|
|
>n1</VAR
|
|
> <VAR CLASS="param"
|
|
>n2</VAR
|
|
>) <SPAN CLASS="cmsy"
|
|
><SPAN STYLE="font-size:16px;vertical-align:-2px"
|
|
>≡</SPAN
|
|
></SPAN
|
|
> (logior <VAR CLASS="param"
|
|
>n1</VAR
|
|
> (lognot <VAR CLASS="param"
|
|
>n2</VAR
|
|
>))
|
|
(logbitp <VAR CLASS="param"
|
|
>j</VAR
|
|
> (lognot <VAR CLASS="param"
|
|
>x</VAR
|
|
>)) <SPAN CLASS="cmsy"
|
|
><SPAN STYLE="font-size:16px;vertical-align:-2px"
|
|
>≡</SPAN
|
|
></SPAN
|
|
> (not (logbitp <VAR CLASS="param"
|
|
>j</VAR
|
|
> <VAR CLASS="param"
|
|
>x</VAR
|
|
>))</PRE
|
|
></DD
|
|
></DL
|
|
></DIV
|
|
></DIV
|
|
><DIV CLASS="footer"
|
|
><DIV CLASS="btmnav"
|
|
><A HREF="v_boole-1.html" CLASS="prev"
|
|
>←</A
|
|
><A HREF="f_logbitp.html" CLASS="next"
|
|
>→</A
|
|
></DIV
|
|
><DIV CLASS="trail"
|
|
>Conversion to HTML copyright 2023 by Gilbert Baumann</DIV
|
|
></DIV
|
|
></DIV
|
|
><SCRIPT
|
|
>domReady();</SCRIPT
|
|
></BODY
|
|
></HTML
|
|
> |