zoukankan      html  css  js  c++  java
  • 位运算

    二进制码由来:

    一个字节byte有8位bit,位7为高位,位0为低位。

    该字节可以保存的最大数为:

     128+64+32+16+8+4+2+1 = 255

    所以总共可以存储256个数,如果带符号,可以存-128到+127.

    通常我门用位7为符号位,0表示正,1表示负(10000001为-1,00000001为1)。

    此时我门发现,100000000表示-0,00000000表示+0,对现实先来说他们没有差别,进而造成了浪费。所以用到二进制补码。

    二进制补码换算方法:

    1.正数无差别

    2.求负数,将正数取反加一。

           011111111表示127

      取反为 10000000

      加一    10000001                  《=此为-127的二进制码

    位运算符

    ~     位取反 

    &      位与

    |     位或

    ^  位异或

     用发:

    掩码  flags &= MASK

    打开位  flags |= MASK

    关闭位  flags &= ~MASK

    转置位  flags ^= MASK                    //打开变关闭或者关闭变打开

    查看某一位  (flags & MASK) == MASK 

    移位运算符

    <<  左移  空位补0

    >>  右移  signed可能补0,或者符号位副本填充;unsigned补0.

    位字段

    位字段通过结构声明体现:

     

    struct box_props {
        unsigned int opaque             :1;
        unsigned int fill_color           :3;
        unsigned int                        :4;
        unsigned int show_border     :1;
        unsigned int border_color     :3;
        unsigned int border_style     :2;
        unsigned int                        :2;             
    }  
  • 相关阅读:
    PostgreSQL 匹配字符串前缀
    Postgresql流复制+pgpool实现高可用
    PostgreSQL 使用Docker搭建流复制测试环境
    PostgreSQL 基于Docker的多实例安装
    PostgreSQL 基于日志的备份与还原
    PostgreSQL 利用pg_upgrade升级版本
    PostgreSQL 安装
    简单推荐系统的SQL实现
    读书笔记:集体智慧编程(1)
    Linux 光速入门
  • 原文地址:https://www.cnblogs.com/olenji/p/5147371.html
Copyright © 2011-2022 走看看