c学习笔记 位操作 20210329

inline

内联函数(c++, c):

  1. inline只适合涵数体内代码简单的函数数使用,不能包含复杂的结构控制语句例如while、switch,并且内联函数本身不能是直接递归函数(自己内部还调用自己的函数)
  2. inline关键字作用就是直接把函数语句复制到调用函数的地方。
  3. inline可以避免函数被频繁调用,不断地有函数入栈,造成栈空间或栈内存的大量消耗

二进制数、位、 字节

二进制整数

c用字节(byte)表示储存系统字符集的大小, 一字节8位, 即八位组(octet), 编号为七的称为高阶位(high-order bit), 编号为0的称为低阶位(low-order bit)。
1字节可储存0-255范围内的数字, 通过不同的方式解释位组合(bit pattern), 例如, 以signed char 则为-128-127。

有符号整数

最常用的数字系统为二进制补码(two’s-complement).
二进制反码(one’s-complement)反转位组合中的每一位形成一个负数。

二进制浮点数

分两部分组成:二进制小数和二进制指数

二进制小数

0.527 = 1/2 + 0/4 + 1/8;

浮点数表示法

数字实际值由二进制小数乘以2的指定次幂组成,
例:一个浮点数乘以4, 其二进制小数不变, 指数乘以2.
在这里插入图片描述

其他进制数

八进制(octal)

每个八进制位对应3个二进制位。
0377(8) = 11111111(2)

十六进制(hexadecimal)

该系统基于十六的幂

c有两个操纵位的工具

  1. 6个作用于位的按位运算符
  2. 字段(field)数据形式

c按位运算符

分按位运算符和移位运算符

按位逻辑运算符

二进制取反或按位取反: ~

二进制中1变为0, 0变为1。

按位与: &

(10010011) & (00111101)    //表达式
(00010001)     //结果值

按位或: |

(10010011) | (00111101)    //表达式
(00010001)    //结果值

按位异或: ^

只有两个运算对象相应的位一个为1, 另一个为0, 结果才为1。

(10010011) ^ (00111101)    //表达式
(10101110)        //结果值

用法:掩码(mask)

按位与常用于掩码。
假设mask为2, 如下:

flags = flags & mask;

输出把除1号位以外的位置都设为0, 1号位的值不变。
掩码隐藏了flags中相应的位。

用法: 打开位(设置位)

需要打开一个值的特定位, 同时保持其他位不变, 可以使用按位或运算符
假设flags 为00001111, mask为10110110.

flags | mask
(00001111)  | (10110110)
(10111111)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值