title: Bitwise operations between 128-bit integers
body: <p>I have a question about using 128-bit registers to gain speed in a code. Consider the following C/C++ code: I define two <code>unsigned long long int</code>s <code>a</code> and <code>b</code>, and give them some values. </p>
  
  <pre><code>unsigned long long int a = 4368, b = 56480;
  </code></pre>
  
  <p>Then, I want to compute </p>
  
  <pre><code>a &amp; b;
  </code></pre>
  
  <p>Here <code>a</code> is represented in the computer as a 64-bit number <code>4369 = 100010001001</code>, and same for <code>b = 56481 = 1101110010100001</code>, and I compute <code>a &amp; b</code>, which is still a 64-bit number given by the bit-by-bit logical AND between a and b:</p>
  
  <pre><code>a &amp; b = 1000000000001
  </code></pre>
  
  <p>My question is the following: Do computers have a 128-bit register where I could do the operation above, but with 128-bits integers rather than with 64-bit integers, and with the same computer time? To be clearer: I would like to gain a factor two of speed in my code by using 128 bit numbers rather than 64 bit numbers, e. g. I would like to compute 128 ANDs rather than 64 ANDs (one AND for every bit) with the same computer time. If this is possible, do you have a code example? I have heard that the SSE regiters might do this, but I am not sure.</p>