Bitwise-logical-operators.html 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1999-2017 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation; with the
  7. Invariant Sections being "Funding Free Software", the Front-Cover
  8. Texts being (a) (see below), and with the Back-Cover Texts being (b)
  9. (see below). A copy of the license is included in the section entitled
  10. "GNU Free Documentation License".
  11. (a) The FSF's Front-Cover Text is:
  12. A GNU Manual
  13. (b) The FSF's Back-Cover Text is:
  14. You have freedom to copy and modify this GNU Manual, like GNU
  15. software. Copies published by the Free Software Foundation raise
  16. funds for GNU development. -->
  17. <!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <title>The GNU Fortran Compiler: Bitwise logical operators</title>
  20. <meta name="description" content="The GNU Fortran Compiler: Bitwise logical operators">
  21. <meta name="keywords" content="The GNU Fortran Compiler: Bitwise logical operators">
  22. <meta name="resource-type" content="document">
  23. <meta name="distribution" content="global">
  24. <meta name="Generator" content="makeinfo">
  25. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  26. <link href="index.html#Top" rel="start" title="Top">
  27. <link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
  28. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  29. <link href="Extensions-implemented-in-GNU-Fortran.html#Extensions-implemented-in-GNU-Fortran" rel="up" title="Extensions implemented in GNU Fortran">
  30. <link href="Extended-I_002fO-specifiers.html#Extended-I_002fO-specifiers" rel="next" title="Extended I/O specifiers">
  31. <link href="_002eXOR_002e-operator.html#g_t_002eXOR_002e-operator" rel="prev" title=".XOR. operator">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.smallquotation {font-size: smaller}
  36. div.display {margin-left: 3.2em}
  37. div.example {margin-left: 3.2em}
  38. div.indentedblock {margin-left: 3.2em}
  39. div.lisp {margin-left: 3.2em}
  40. div.smalldisplay {margin-left: 3.2em}
  41. div.smallexample {margin-left: 3.2em}
  42. div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
  43. div.smalllisp {margin-left: 3.2em}
  44. kbd {font-style:oblique}
  45. pre.display {font-family: inherit}
  46. pre.format {font-family: inherit}
  47. pre.menu-comment {font-family: serif}
  48. pre.menu-preformatted {font-family: serif}
  49. pre.smalldisplay {font-family: inherit; font-size: smaller}
  50. pre.smallexample {font-size: smaller}
  51. pre.smallformat {font-family: inherit; font-size: smaller}
  52. pre.smalllisp {font-size: smaller}
  53. span.nocodebreak {white-space:nowrap}
  54. span.nolinebreak {white-space:nowrap}
  55. span.roman {font-family:serif; font-weight:normal}
  56. span.sansserif {font-family:sans-serif; font-weight:normal}
  57. ul.no-bullet {list-style: none}
  58. -->
  59. </style>
  60. </head>
  61. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  62. <a name="Bitwise-logical-operators"></a>
  63. <div class="header">
  64. <p>
  65. Next: <a href="Extended-I_002fO-specifiers.html#Extended-I_002fO-specifiers" accesskey="n" rel="next">Extended I/O specifiers</a>, Previous: <a href="_002eXOR_002e-operator.html#g_t_002eXOR_002e-operator" accesskey="p" rel="prev">.XOR. operator</a>, Up: <a href="Extensions-implemented-in-GNU-Fortran.html#Extensions-implemented-in-GNU-Fortran" accesskey="u" rel="up">Extensions implemented in GNU Fortran</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  66. </div>
  67. <hr>
  68. <a name="Bitwise-logical-operators-1"></a>
  69. <h4 class="subsection">6.1.29 Bitwise logical operators</h4>
  70. <a name="index-logical_002c-bitwise"></a>
  71. <p>With <samp>-fdec</samp>, GNU Fortran relaxes the type constraints on
  72. logical operators to allow integer operands, and performs the corresponding
  73. bitwise operation instead. This flag is for compatibility only, and should be
  74. avoided in new code. Consider:
  75. </p>
  76. <div class="smallexample">
  77. <pre class="smallexample"> INTEGER :: i, j
  78. i = z'33'
  79. j = z'cc'
  80. print *, i .AND. j
  81. </pre></div>
  82. <p>In this example, compiled with <samp>-fdec</samp>, GNU Fortran will
  83. replace the <code>.AND.</code> operation with a call to the intrinsic
  84. <code><a href="IAND.html#IAND">IAND</a></code> function, yielding the bitwise-and of <code>i</code> and <code>j</code>.
  85. </p>
  86. <p>Note that this conversion will occur if at least one operand is of integral
  87. type. As a result, a logical operand will be converted to an integer when the
  88. other operand is an integer in a logical operation. In this case,
  89. <code>.TRUE.</code> is converted to <code>1</code> and <code>.FALSE.</code> to <code>0</code>.
  90. </p>
  91. <p>Here is the mapping of logical operator to bitwise intrinsic used with
  92. <samp>-fdec</samp>:
  93. </p>
  94. <table>
  95. <thead><tr><th width="25%">Operator</th><th width="25%">Intrinsic</th><th width="50%">Bitwise operation</th></tr></thead>
  96. <tr><td width="25%"><code>.NOT.</code></td><td width="25%"><code><a href="NOT.html#NOT">NOT</a></code></td><td width="50%">complement</td></tr>
  97. <tr><td width="25%"><code>.AND.</code></td><td width="25%"><code><a href="IAND.html#IAND">IAND</a></code></td><td width="50%">intersection</td></tr>
  98. <tr><td width="25%"><code>.OR.</code></td><td width="25%"><code><a href="IOR.html#IOR">IOR</a></code></td><td width="50%">union</td></tr>
  99. <tr><td width="25%"><code>.NEQV.</code></td><td width="25%"><code><a href="IEOR.html#IEOR">IEOR</a></code></td><td width="50%">exclusive or</td></tr>
  100. <tr><td width="25%"><code>.EQV.</code></td><td width="25%"><code><a href="NOT.html#NOT">NOT</a>(<a href="IEOR.html#IEOR">IEOR</a>)</code></td><td width="50%">complement of exclusive or</td></tr>
  101. </table>
  102. </body>
  103. </html>