www.cnblogs.com/ruiyqinrui

开源、架构、Linux C/C++/python AI BI 运维开发自动化运维。 春风桃李花 秋雨梧桐叶。“力尽不知热 但惜夏日长”。夏不惜,秋不获。@ruiY--秦瑞

python爬虫,C编程,嵌入式开发.hadoop大数据,桉树,onenebula云计算架构.linux运维及驱动开发.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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  秦瑞It行程实录  阅读(417)  评论(0编辑  收藏  举报
www.cnblogs.com/ruiyqinrui