位运算

简介: 1,数值在计算机中的表示 位[bit],位:是指二进制中的位,是计算机能处理的最小单元. 字节[byte],字节:计算机处理的基本单位,计算机的内存是按字节分配存储空间的,一个字节由8位二进制数组成,C中数据类型都是以字节为基本单元.

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;

 

目录
相关文章
|
3月前
玩转位运算
玩转位运算
|
6月前
|
存储 Java
一篇搞定位运算(&、|、^、~、>>、<<、>>>)
我们最了解的就是十进制 , 除了十进制 , 还有二进制 , 六进制 , 八进制等等 , 由于位运算操作就是二进制 , 所以我们主要来说一下二进制 , 十进制的个位有(0~9)这几个数字 , 而二进制也相同 , 二进制的个位上只有0和1
32 0
|
8月前
|
算法 Java 编译器
第 13 天_位运算
第 13 天_位运算
59 0
|
8月前
位运算专题(个人理解)
位运算专题(个人理解)
38 0
|
9月前
|
算法 数据安全/隐私保护
基本的位运算
基本的位运算
|
9月前
|
算法
位运算能做什么
位运算能做什么
38 0
|
9月前
|
存储
位运算及A+B
位运算及A+B
|
10月前
|
存储 Java 程序员
“高端”的位运算
大家好,我是王有志。原计划迭代作为预备知识的收尾,不过在解2的幂和4的幂时,想到关于数字2的问题可以通过位运算去解决,因此补充了关于位运算的内容。
60 1
位运算的小技巧
快速学习位运算的小技巧