ICS课程学习(2)——比特,字节和整数

比特,字节和整数

课程课件链接:15-213 Lec2:Bits, Bytes, & Integers I

信息表示

在计算机世界,所有的信息都是通过比特进行表示(一切皆比特)。

每一比特的取值要么0,要么是1.
在计算机中通过各种方式对比特集进行编码或者解析。
那为什么是比特来表示信息呢? 电子学实现

  • 0或者1的双稳态易于存储
  • 在噪声和不正确的线路上可以进行可靠传输

在这里插入图片描述

字节

字节(byte), 对应8比特。
字节的表示:

  • 二进制表示: 0000000 0 2 00000000_2 000000002 ~ 1111111 1 2 11111111_2 111111112
  • 十进制表示: 0 10 0_{10} 010 ~ 25 5 10 255_{10} 25510
  • 十六进制表示: 0 0 16 00_{16} 0016 ~ F F 16 FF_{16} FF16

注:
对于十六进制表示法,使用 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , F 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F来表示数值
在C语言中,十六进制 F 1 E 2 D 3 C 4 16 F1E2D3C4_{16} F1E2D3C416数值表示为:

  • 0xF1E2D3C4
  • 0xf1e2d3c4

十进制和二进制、十六进制之间的对应关系如下表所示

十进制十六进制二进制
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
10A1010
11B1011
12C1100
13D1101
14E1110
15F1111

二进制与十六进制之间的转换如下例子
在这里插入图片描述
C语言中数据类型表示的例子如下
在这里插入图片描述

比特操作

介绍比特操作之前,先学习下布尔代数
布尔代数式逻辑的代数表示, True编码为1,False编码为0。

布尔代数常见的逻辑操作有,与(AND),或(OR), 非(NOT),异或(XOR)

  • 与操作,用符号 & 表示,对应的比特与操作如下所示
ABA&B
000
100
010
111
  • 或操作,用符号 | 表示,对应的比特或操作如下表所示
ABA|B
000
101
011
111
  • 非操作,用符号 ~ 表示,对应的比特非操作如下表所示
A~A
01
10
  • 异或操作,用符号 ^ 表示,对应的比特操作如下表所示
ABA^B
000
101
011
110

以上是单个比特的操作,对于比特向量的布尔操作则是逐个比特进行布尔逻辑操作,例如

在这里插入图片描述
C语言中的比特操作(称之为位操作)有对应比特操作符

  • &, 与操作
  • | ,或操作
  • ~ ,非操作
  • ^,异或操作

同时,C语言中有对应的逻辑操作,对应的逻辑操作符为

  • &&
  • ||
  • !

对于逻辑操作符中,0认为是false,其他非0认为是true。
逻辑操作的结果总是True(1)或者False(0)
例如

!0x41 = 0x0
!0x00 = 0x1
!!0x41 = 0x1

0x41 && 0x55 = 0x1
0x41 || 0x55 = 0x1
0x41 && 0x0 = 0x0
0x41 || 0x0 = 0x1

移位操作

  • 左移操作

左移表达式一般表示为 x < < y x << y x<<y
表示对于比特向量 x x x,向左移动 y y y个位置。比特向量 x x x的高比特位置丢掉y个比特位,右边的低比特位值填充y个0。如下图所示
在这里插入图片描述

  • 右移操作

右移表达式一般表示为 x > > y x >> y x>>y
表示对于比特向量 x x x,向右移动 y y y个位置。比特向量 x x x的低比特位置丢掉y个比特位,左边的高比特位值填充的值由移位类型来决定(逻辑右移和算术右移)。

对于 逻辑右移:左边高比特位填充0
对于 算术右移:使用x的最高比特位进行填充

如下图所示
在这里插入图片描述

整数

无符号二进制转为十进制公式如下

B 2 U ( X ) = ∑ i = 0 w − 1 x i ⋅ 2 i B2U(X) = \sum^{w-1}_{i=0} x_{i} \cdot {2}^i B2U(X)=i=0w1xi2i

有符号二进制(二进制补码)转为十进制公式如下

B 2 T ( X ) = − x w − 1 ⋅ 2 w − 1 + ∑ i = 0 w − 2 x i ⋅ 2 i B2T(X) = -x_{w-1} \cdot 2^{w-1} + \sum^{w-2}_{i=0} x_{i} \cdot {2}^i B2T(X)=xw12w1+i=0w2xi2i

对于有符号数的二进制补码最高比特位是符号位

  • 最高比特位 0 : 表示非负数
  • 最高比特位 1 : 表示负数

浮点数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值