CSAPP第二章笔记

Bits,Bytes,and Integers

1.Bit比特:

计算机以比特为基本单位存储信息,以比特位表示所有数字。

2.二进制的数字表示

二进制数仅由0和1组成,基数的基数为N=2。

3.编码一个字节以及16进制表示

一字节由八比特组成,所有数据由字节组成

4.C中数据类型的长度

 

5.布尔代数

当操作连续的比特时,可认为是对每个比特位使用布尔操作,即进行&(and),|(or),^(异或),~(非)操作.

6.逻辑操作和位操作的对比

逻辑操作中,任何非零的值在逻辑上都被看作TRUE,只有值为零时被看作FALSE。

7.移位操作

逻辑右移:即右移时左边补零

算数右移:即右移时左边补最高位的值

对于无符号数,必须使用逻辑右移;对于有符号数,原则上两种右移都可以采用,但实际中几乎所有编译器都使用算数右移。

8.数字表示

B2U:从比特位模式转化为无符号数的编码表示(将加权位求和,每个比特位用2的幂来加权)

 

B2T:从比特位模式转化为有符号数的编码表示

 

对有符号数,采用补码的形式表示。

 

c语言默认有符号数和无符号数比较时,都转为无符号数。

无符号与有符号数在值不同时相差2^w个数,w为字长。

 

9.C中有符号数和无符号数的相互转换

C中符号数转换有两种方式:隐式类型转换和显式类型转换(强制类型转换)

隐式类型转换:C中默认的转换方式,如signed类型与unsigned类型比较时signed类型会转换为unsigned类型,其表示的十进制数也会发生改变。

例如:

`unsigned i;

for(i = cnt-2; i >= 0; i--)

a[i] += a[i+1];

因为x为无符号数,所以x永远大于0,程序会一直循环下去

10.有符号数的扩展

有符号数在拓展时,在高位补充符号位。

将一个大的数据类型转换为小的数据类型时,有符号数不仅数值大小可能变化,符号位也可能发生改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值