title: Calculate broadcast by IP and mask
body: <p>i'm trying to calculate broadcast address by logic OR and NOT with specified ip and mask, but the func return me smth strange. Why?</p>
  
  <pre><code> IP = '192.168.32.16'
   MASK = '255.255.0.0' 
  
   def get_ID(ip, mask):
      ip = ip.split('.')
      mask = mask.split('.')
      ip = [int(bin(int(octet)), 2) for octet in ip]
      mask = [int(bin(int(octet)), 2) for octet in mask]
      subnet = [str(int(bin(ioctet &amp; moctet), 2)) for ioctet, moctet in zip(ip, mask)]
      host = [str(int(bin(ioctet &amp; ~moctet), 2)) for ioctet, moctet in zip(ip, mask)]
      broadcast = [str(int(bin(ioctet | ~moctet), 2)) for ioctet, moctet in zip(ip, mask)] # a mistake, i guess
      print('Subnet: {0}'.format('.'.join(subnet)))
      print('Host: {0}'.format('.'.join(host)))
      print('Broadcast address: {0}'.format('.'.join(broadcast)))
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/SPWDo.png" rel="noreferrer"><img src="https://i.stack.imgur.com/SPWDo.png" alt="screenshot"></a></p>