博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
位运算
阅读量:5161 次
发布时间:2019-06-13

本文共 950 字,大约阅读时间需要 3 分钟。

二进制码由来:

一个字节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;             }

 

posted on
2016-01-21 10:15 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/olenji/p/5147371.html

你可能感兴趣的文章
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
抛弃IIS,利用FastCGI让Asp.net与Nginx在一起
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>
11.28.cookie
查看>>
BeanShell简介
查看>>
python字符串操作
查看>>
不同程序语言的注释和变量要求
查看>>
语言基础(9):static, extern 和 inline
查看>>
ES5_03_Object扩展
查看>>
bzoj 2600: [Ioi2011]ricehub
查看>>