C语言位操作 | 按位运算符

2022-10-27 16:04:15 浏览数 (2)

二进制数、位、字节

PS:位运算详见计算机科学导论

前言:

C语言中可以单独操控变量中的位,例如:通常向硬件设备发送一两个字节来操控这些设备,每个位(bit)都有特定的含义,另外,与文件相关的操作信息经常被存储,通过特定的位表明特定的项。许多的压缩和加密操作都是直接除理单独的位。

高级语言一般不会处理这些级别的细节,C在提供高级语言便利的同时,还能在为汇编语言所保留的级别上工作。

二进制整数

C语言用字节(byte)表示存储系统字符集所需要的大小,所以C字节看可能是8位,9位,16位或者其他值。不过藐视存储芯片和数据率中所用的字节指的是8位字节。

假设一个字节为8位,每一位的编号对应2的相应指数,该字节能表示的最大数字是吧每一个位都设置为1:11111111这个二进制数的值就是128 64 32 16 8 4 2 1 = 255,二这个字节最小的二进制数是00000000,其值是0,因此1字节可以存储1~255范围内的数字,总共256个值。

或者不同的方式解释位组合,程序可以用1字节存储-128~ 128范围内的整数,总共还是256个值。

例如:

C

代码语言:javascript复制
unsigned char//用一个字节表示的范围是0~255
signed char//用一个字节表示的范围是-128~ 128

有符号整数

如何表示有符号整数取决于硬件,而不是C语言。

表示方法:表示有符号数最简单的方法是用1位存储符号,用剩下的7位来表示数字本身,用这种符号量表示法,10000001表示-1,00000001表示1.因此,其表示范围是-127~ 127

缺点:这种方法表示会出现两个0: 0和-0,这很容易混淆,而且两个位来存储同一个值也很浪费。

解决方法:二进制补码(详见计算机科学导论P32)简单概述:以1字节为例,

PS:二进制反码

二进制浮点数

二进制小数

浮点数表示方法

其他进制数

八进制

十六进制

C按位运算符

按位逻辑运算符

用法:掩码

用法:打开位

用法:关闭位(清空位)

用法:切换位

用法:检查位的值

移位运算符

示例

位字段

示例

位字段和按位运算符

对齐特性(C11)

0 人点赞