zoukankan      html  css  js  c++  java
  • 【二进制的一些操作】

    <1>二进制与十进制互转

    十进制转二进制

    例子:13 -> 1101     

    13/2=6余1

    6/2=3余0

    3/2=1余1

    1/2=0余1

    那么13用二进制表示为 1101 (倒序排列余数 不足的用0补齐 00001101) 

    二进制转十进制   

    例子:1101 -> 13  可以在C#里面声明为 int num = 0b1101 或者 string num = "00001101"

    补齐00001101

    13 = 0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 0+0+0+0  +8+4+0+1

     

    <2>位运算

    ~ 逻辑非运算 00001101 -> 11110010  即 1取0   0取1

    & 逻辑与运算 00001101&00000011 -> 00000001 即1&1取1   1&0取0  0&0取0

    | 逻辑或运算  00001101&00000011 -> 00001111 即1&1取1   1&0取1  0&0取0 

    ^ 逻辑异或运算 00001101&00000011 -> 00001110 即1&1取0   1&0取1  0&0取0   相同取0 不同取1

    << 左移运算 00001101 -> 01101000 即 把每一位向左移3位 等于把原始数字*2^3 = 13 * 2^3

    >> 右移运算 00001101 -> 00000001即 把每一位向右移3位 等于把原始数字/2^3 = 13 / 2^3

    <3>一个在游戏中的应用:使用0-7的二进制表示8个方向

    //0 0/2 = 00        0000  
    //1 1/2 = 01        0001  //可以表示为Z轴
    //2 10 01            0010  //可以表示为Y轴
    //3 11 0              0011
    //4 20 10 01       0100  //可以表示为X轴
    //5 21 10 01       0101
    //6 30 11 01       0110
    //7 31 11 01       0111
    //8 40 20 10 01 1000 与0-7做 | 运算  可以取交集

    在八叉树中,可以用0-7与1,2,4做&运算 取到父节点分割8个子节点的位置关系

  • 相关阅读:
    201116西瓜书机器学习系列---2、模型评估
    201116西瓜书机器学习系列---1、绪论
    js中null和undefined的区别
    ajax和pjax有什么区别
    html5中的web存储
    Java调用linux命令及Shell脚本
    plsql developer中,清除登录历史
    PLSQL自动登录,记住用户名密码&日常使用技巧
    Linux中查看进程状态信息
    Is there any difference between GROUP BY and DISTINCT
  • 原文地址:https://www.cnblogs.com/cocotang/p/10824302.html
Copyright © 2011-2022 走看看