zoukankan      html  css  js  c++  java
  • 二进制的学习总结

    二进制的基础

      and &    (按位取与)  1 & 1  =  1   1 & 0 = 0  0 & 0 = 0  0 & 1 = 0

      or    |      (按位取或)  1 | 1 = 1  1 |  0 = 1  0 | 0 = 0  0 | 1 = 0

      xor    ⊕/^  (按位异或)   1⊕1 = 0  1⊕0 = 1  0 ⊕0 = 0  0 ⊕1 = 0

        lsh  <<  (逻辑左移)将二进制数向左移动x位造成二进制数右边不足用0补足,左边高位溢出

        rsh >>   (逻辑右移)将二进制数向右移动y位造成二进制数左边补足用0补足,右边高位溢出

        not    ~     (按位取反)  每一位0变1,1变0

    注意:二进制操作的优先级好像很低,所以进行计算时可以多打写括号反正又不会累死

    二进制的基本操作

    读取x的第pos个二进制位:      (x >> pos)& 1;

    读取x的第pos位开始的cnt位:    (x >> pos)& ((1 << cnt) - 1);

    将x的第pos位置为1:        (1 << pos)| x;

    将x的第pos位置为0:        (~(1 << pos))& x;

    将x的第pos位取反:         (1 << pos) ⊕ x;

    将x的末尾的1提取出来:       x & (x ⊕ (x + 1));

    二进制中最低位的一个1的位置:      lowbit(x) = x & (-x);

    遍历二进制中所有的1的位置:    for(; x; x -= lowbit(x));

    判断一个数的奇偶性:         (x & 1) ? 偶数 : 奇数;

    对2的幂取模 :             x & ((1 << y)  - 1)

    二进制表示集合

      枚举子集  for(int i = x; i ; i = (i & (i - 1));  

     

  • 相关阅读:
    Windows Server 2003服务器.net4.0+IIS6.0的服务器,IE11浏览器访问的不兼容性
    SVN标准目录结构
    关于SVN 目录结构,使用教程
    Visio编辑数据库模型列
    IIS 8.5配置.net网站[花了半个多小时]
    调试存储过程
    generate the next AttestationNumber, 格式是ICD-EPRG-DEV-0000000001,ICD-EPRG-DEV-0000000002
    构建布局良好的Windows程序
    初始window程序
    使用ADO.NET访问数据库查询和操作数据
  • 原文地址:https://www.cnblogs.com/2020pengxiyue/p/9322134.html
Copyright © 2011-2022 走看看