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

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

1,数值在计算机中的表示

位[bit],位:是指二进制中的位,是计算机能处理的最小单元.字节[byte],字节:计算机处理的基本单位,计算机的内存是按字节分配存储空间的,一个字节由8位二进制数组成,C中数据类型都是以字节为基本单元.补码:整数补码是此本身,负数补码是其绝对值按位取反取反再加1;    计算机是以补码的形式存放数值的.

2,位运算符

位运算概念:     以二进制位为单位的运算,位运算仅用于整数[整型数,字符型]
位运算符:     位逻辑运算符:&->位于,|->位或,~->位非,^->位取反.     位移位运算符:<<->左移,>>->右移.

 3,位逻辑运算符-运算规则

[按位求反~]~1=0,~0=1;取反->1的反为0,0的反为1;[按位与&]0&0=0,0&1=0,1&0=0,1&1=1;对应位均为1时才为1,否则为0;【按位或|】0|1=1,0|0=0,1|0=1,1|1=1;对应位均为0时才为0,否则为1;[按位异或]0^1=1,0^0=0,1^0=1,1^1=0;对应位不同,按位或:对应位均为1时才为1,否则为0;按位与:对应位均为0时才为0,否则为1;按位异或:对应位相同时为0,否则为1;

4,位位移运算

x<
<位移位数;向左位移几位;x>
>箭头向那就是向那边移动;

5,位运算操作注意项

参与为运算的操作数均应是整型数或是字符型数据,进行运算的时候先将各种进制转换成二进制再进行按位相关操作.

6,2个类型长度不同的数进行位运算,则需要进行补位;

不同类型长度的数右端对齐,左端补位,整数与无符号整型数左补0,负数补1;

练习

设计函数,给出一个数的原码,得出该数的补码;    根据补码定义,正数补码与原码相同,负数的补码等于绝对值按位取反[即反码]+1;

位段数据类型;

  有时候存储一个信息数据不必占一个字节空间,只需一个或多个二进制位就够用,

要是强制使用int等成型的数据类型,务必造成内存空间浪费,介于此C语言引入了位段类型概念;

  位段概念是一种特殊的结构类型,其所有成员均以二进制位为单位定义长度,

列如:CPU的状态寄存器,按位段定义如下:

struct status{unsigned sign: 1; //符号标志unsigned zero: 1; //零标志unsigned carry: 1; //进位标志unsigned parity: 1; //奇偶溢出标志unsigned half_carry: 1; //半进位标志unsigned negative: 1; //减标志} flags;//定义结构体变量的同时定义一个结构体变量为flags;

 

posted on
2013-11-04 21:40 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/ruiy/p/bit.html

你可能感兴趣的文章
JavaScript Number 对象
查看>>
java 上传附件的一点积累
查看>>
一篇关于apache commons类库的详解
查看>>
使用GIT时排除NuGet的packages文件夹
查看>>
[转]如何避免外发邮件被误判为垃圾邮件
查看>>
常用代码之八:setTimeout 和 clearTimeout。
查看>>
easyui学习笔记1—增删改操作
查看>>
Checkpoint--相关问题
查看>>
[转] EJB 3和Spring技术体系比较
查看>>
TSQL--使用CTE完成递归查询
查看>>
TSQL--自增键和索引对表的插入效率测试
查看>>
linux中vi保存文件时的“Can't open file for writing”
查看>>
__attribute__((packed))详解
查看>>
UML中关联(Association)、聚合(Aggregation)和合成(Composition)之间的区别
查看>>
理解brk和sbrk
查看>>
FlexPaper+SWFTool+操作类=在线预览PDF
查看>>
重新想象 Windows 8 Store Apps (28) - 选取器: CachedFileUpdater(缓存文件更新程序)
查看>>
全面解读python web 程序的9种部署方式
查看>>
Python基础08 面向对象的基本概念
查看>>
Eclipse上安装GIT插件EGit及使用
查看>>