二进制数字系统中数据存储的最小单位,即每个二进制数0或1就称为位。位也叫比特(bit),8个bit组成一个字节(byte),每个字节表示程序中的某些文本字符。字长(word size)表征了CPU一次能并行处理的最多二进制位数,例如32位机一次最多能处理32个bit组成的单元。 位的本质是二进制数。由于一个byte由8位构成,即00000000 固定长度为w的由二进制代数组成的行向量称为位向量。位向量的逻辑运算是元素级的逻辑运算,例如 用位向量 通过位向量运算,有选择地使能或屏蔽某些信号(或权限等)的位向量,称为位向量掩码。 将逻辑真定义为二进制数1,逻辑假定义为二进制数0,这种表示逻辑运算的二进制代数称为布尔代数。利用布尔代数可以很好地研究逻辑推理。 可以看出位级逻辑运算是元素级的布尔逻辑运算,即每个位向量元素进行0-1逻辑运算;而命题逻辑运算是把整个字节看成一个整体,将所有的非0的参数看成逻辑真(1),0看成逻辑假(0),所以就命题本身而言可以不为布尔代数,执行逻辑运算时是把整体看成一个布尔代数,再进行相应的逻辑运算。 本篇博客是对CSAPP这部分内容的一个总结和理解,参考资料也是这本书,作为小白第一次写博客,希望各位指出不足,相互交流
计算机系统的位运算与逻辑运算
一、位
1、定义
2、表示方法
(2) ~ 11111111
(2),这种表示方法很冗长。把8位二进制数转成十进制为0
(10) ~ 255
(10),虽然表示起来方便,但是二-十进制转换很麻烦。因此引入了十六进制表示法,原因在于十六进制表示8位二进制数很简洁而且二-十六进制可以快速转换。以0x或0X打头的数字常量一般就是十六进制数。3、位向量
a=[
a(w−1),
a(w−2),……,
a1,
a0],
b=[
b(w−1),
b(w−2),……,
b1,
b0],那么这两个位向量的逻辑与运算就是
a&
b=[
a(w−1)&
b(w−1),
a(w−2)&
b(w−2),……,
a0&
b0],注意此时的二进制代数视为表示逻辑真假的布尔代数。
任何“整型”数据类型都可以使用位运算。对于十六进制表示的字节进行位运算时,最好的方法是将十六进制转二进制,位运算后再转回十六进制,例如对char类型数据进行位运算。4、位向量的应用
(1)表示有限集合
a=[
a(w−1),
a(w−2),……,
a1,
a0]编码任何子集
A⊆{0,1,2……,
w−1},当且仅当
i⊆
A时
ai = 1,于是用与或非就可以分别进行有限集合的交并补集运算(2)位向量掩码(BitMask)
例如,给出
x=0x87654321,要求给出一个BitMask使其将除了
x的最低有效字节外其余位都取补,而最低有效字节不变。于是我们可以给出
a=~0xFF,然后将
x与
a异或运算即可实现目标。下面要总结几点:
①1^x 可以实现对x取反,0^x可以实现保持x不变
②上例位向量还可以是
a = 0xFFFFFF00,然后直接进行
x^
a,但这样的缺点是代码的可移植性较差5、移位运算
注意:
①位向量最高位为0时,算术右移与逻辑右移等价,因为把最高位视为符号位的话,有符号的正数和无符号数等价
②循环移位:若对于一个w位位向量,进行k≥w的移位运算,则此时位移量为k mod w,类似于循环队列的索引结构。但这种行为没有保证,编程时应尽可能保证k<w
③移位的优先级较低,移位运算时要注意运算顺序二、布尔代数
1、定义
2、逻辑运算
3、位运算与逻辑运算的关系
三、小结
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算