程序员笔试、面试笔记:数据类型在计算机中的存储

int型:补码储存方式(4字节,32位)

  • 正数:原码与补码相同。

例如  2的储存

二进制:010

前面补0: 00000000 00000000 00000000 00000010

 

  • 负数:补码为原码按位取反+1

例如  -2的储存

       原码:00000000 00000000 00000000 00000010

按位取反:11111111 11111111 11111111 11111101

         +1 :11111111 11111111 11111111 11111110

 

float型:IEEE R32.24规范,即1位符号位、8位阶码、23位尾数(4字节 32位)

例如  20.125的储存

整数部分转化为二进制:除2取余    10100

小数部分转化为二进制:乘二取整   001

二进制:10100.001

二进制科学计数法:1.0100001 * 2^4 (要使整数位为1,小数点左移4位)则阶数为4

阶码表示:阶数+偏置(float型是127)   4+127 = 131 即1000 0011

1位符号位(正数为0,负数为1)   8位阶码位    23位尾数(后面补0)

                                            0          10000011    0100 001 0000 0000 0000 0000  

  

double型:遵循IEEE R64.53规范,即符号位是1位,阶码为11位,尾数为52位

偏置量为1023,其他计算同float型。

 

 

例题:float a = 1.0f;

          cout << (int&)a <<endl;

输出的结果是什么?

1.0f在内存中储存遵守浮点型储存方式,应储存为:

1.0f的科学计数法:1.0*2^0  

1位符号位(正数为0,负数为1)   8位阶码位    23位尾数(后面补0)

              0                                        11111111    00000000 00000000 0000000

输出会以int型输出(默认十进制输出):1065353216

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值