位运算

计算机数值表示与位运算
本文深入探讨了计算机中数值的表示方式,包括位、字节的概念,以及如何使用补码存储数值。此外,详细解释了位运算符的类型、运算规则及应用,并通过实例展示了如何设计函数来实现数的原码到补码的转换。最后,介绍了位段数据类型及其在处理不需要完整字节数据场景中的应用。

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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值