Stanford CS107 Programming Paradigms 编程范式 课程笔记

1.c/c++类型的一般大小

boolcharshortint longfloatdouble
 1 byte2 bytes4 bytes4 bytes4bytes8bytes

2.数据的+/-计算

  • a、加法
00000111

+

10000111

=

00001000
  • b、负数的二进制表示

-7 由与+7相加得0可以推出:

00000000

-

00000111

=

11111001

原因是-7和+7相加必然为0,对于计算机清零有一种手段,即为高位溢出。因此负数的二进制表示可以认为是对应正数各位取反,再+1。

3.长短类型之间赋值的处理

  • 对于长短类型之间赋值,长类型赋值给短类型时,直接截断高位。即:

int    

0000000010000001

to 

short

10000001
  • 对于短类型赋值给长类型时,则会发生符号位扩展。如果有符号位的话:

char

1001

to

short

11111001
  • 符号位则会扩展到前面的位中,以保证高位溢出各位清零的多米诺效应。

4.float类型二进制各位表示的协议

example.

int i =37;

float f = *(float*)&i;

当采用float类型解析int类型的数据时,二进制的各位将按照上图的规则进行解析计算:

  • 0000000000100101

    xxxxxx=2^-3+2^-6+2^-8

(-1)^0 *1.xxxxxx*2^-127
 

  • last

float j = 7.0;

short i = *(short*)&j;

=========

同理即为用short去解析float的各个二进制位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值