zoukankan      html  css  js  c++  java
  • 位运算的使用技巧

    1、左移n位就是乘以2的n次方,右移n位就是除以2的n次方

    2、flages特性的使用 https://www.cnblogs.com/netqq/p/9383144.html  总的来说是对于2^n 次方之间位运算和运算结果的还原和 匹配

       例如1、2、4、8 这几个数字

    10进制 2进制
    1 00000001
    2 00000010
    4 00000100
    8 00001000
    16 00010000

       举个例子:7=1|2|4  不信请看:00000001|00000010|00000100=00000111    

       举个例子:7&2=2    不信请看:00000111&00000010=00000010(=2) 这说明了什么,说明了  7这个值中含有 2这个值,用于确定一个数字中是否含有另外一个数字

       举个例子:7^2=5   (=1|4)  不信请看:00000111^00000010=00000101 (=5) 这说明了什么,说明了 从7中去掉了2,这用于从一个数字中去掉一个数字

       举个例子:5^2=7  不信请看:00000101^00000010=00000111(=7) 这说明了什么,互相异或后可以还原值

         举个例子:7|8=15    不信请看:00000111|00001000=00001111(=15) 这说明了什么,|运算像是加法,^运算像是减法,&运算保留较小的数仅限于2^n次方之间

         举个例子:2|4=6       不信请看 00000010|00000100=00000110   (=6) 这说明了什么,说明了一个用语言不太好描述的规则,一个非2^的偶数的计算规则,看表格找规律

    14 8|4|2
    12 8|4
    10 8|2
    6 4|2
    18 16|2
    20 16|4

      发现一个规律:任何一个非2^n次方的数,都修要 2^(n-1) 的数参与| 运算,例如:9 需要8 |1参与,10需要8|2  ,11需要 8|4 ,13需要8|4|1  ,14需要8|4|2

    3、准备中

  • 相关阅读:
    Elasticsearch使用记录
    Python程序打包成exe的一些坑
    Django的基础操作总结
    社会工程学的基本理论和基本应用
    ceph分布式存储系统初探
    简单个人信息安全模型
    基于socket.io客户端与服务端的相互通讯
    使用node建立本地服务器访问静态文件
    java 03 数组
    java 04 面向对象
  • 原文地址:https://www.cnblogs.com/netqq/p/13092680.html
Copyright © 2011-2022 走看看