C++浮点数的取整显示

        //双精度double的二进制小数,使用64 bit存储
	//其中 1位符号位,11位阶码位,52位小数位

	//10进制的0.6写成二进制为(-1)^0 * 2^0 * 0.10011001100110011001100110011001100110011001100110011  无限循环 
	//(-1)^0 * 2^-1 * 1.0011001100110011001100110011001100110011001100110011
	//(-1)^0 * 2^-1 * 0.0011001100110011001100110011001100110011001100110011	
	//下面介绍一下移码:移码(又叫增码),补码的符号位取反 再减 1 就是移码了 
	//浮点数的阶码用的就是移码。
	//-1的补码是111 1111 1111,取反是011 1111 1111,再减 1 就是 011 1111 1110 
	//所以符号位为 0 , 阶码位为 011 1111 1110 , 
	//小数位为 0011001100110011001100110011001100110011001100110011
	//写在一块就是 0    011 1111 1110    0011001100110011001100110011001100110011001100110011

	//3fe3333333333333 转换成2进制如下: 
	//0011 1111   1110 0011  0011 0011  0011 0011  0011 0011  0011 0011  0011 0011  0011 0011

	double num = 0.6;
	cout <<"输出num的值为:"<< num << endl;
	cout <<"num的16进制为:"<< hex << (long long int&)num << endl << endl;

	long long int num_a = 0x3fe3333333333333;
	long long int num_b = 0x3fe33333ffffffff;
	long long int num_c = 0x3fe3333388888888;
	cout << "num_a:" << (double&)num_a << endl << "num_b:" << (double&)num_b << endl << "num_c:" << (double&)num_c << endl;
	cout << "num_a == num_b 的值为:" << (num_a == num_b) << endl;
	cout << "num_a == num_c 的值为:" << (num_a == num_c) << endl;
	cout << "num_b == num_c 的值为:" << (num_b == num_c) << endl << endl;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值