(int&)a 与 (int)&a 有什么区别!疑惑!!!!公司应聘考试题目
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
int main()
{
float a = 1.0f;
cout << sizeof(int) <<endl;//4
cout << sizeof(float) <<endl;//4
cout << (int)a << endl;//1
cout << &a << endl;
cout << (int)&a << endl;
cout << (int&)a << endl;
cout << boolalpha << ((int)a == (int&)a ) << endl;//
float b = 0.0f;
cout << (int)b << endl;//0
cout << &b << endl;
cout << (int&)b << endl;//0
cout << boolalpha << ((int)b == (int&)b ) << endl;//
return 0;
}
========================c语言中FLOAT 是如何表示的===========================
c语言中FLOAT 是如何表示的?尾数,阶码是如何在32位上安排的,即哪几位是
尾数,哪几位是阶码,那一位是符号位。听说与CPU有关,是真的吗?
有1位符号位,8位指数位和23位有效数字位。实际上有效数字位是24位,因为第
一位有效数字总是“1”,不必存储。
一般的符号位不同,它用“1”代表正,用”0“代表负。整个实数的符号位用“
1”代表负,“0”代表正。
字节的最低位编号为0,则实数各个部分在这32个二进制位中的分布是这样的:3
1位是实数符号位,30位是指数符号位,29---23是指数位,22---0位是有效数字
位。注意第一位有效数字是不出现在内存中的,它总是“1”。
分化为二进制的方法是不同的。
一个有效数字的右边。
移得到的或n=0,则第30位放入“0”。
补足七位,放入第29到第23位。如果n是右移得到的或n=0,则将n化为二进制后在
左边加“0”补足七位,再各位求反,再放入第29到第23位。
四位有效数字。将小数点点在最左边那个“1”的右边。
位是“1”时将n增1。
,得到一个二进制表示的实数。
号或负号即可。
0。
如果还不太明白,这里举几个例子。
1000111101011100001”。将它放入第22到第0位。
七位得到0000011,放入第29到第23位。
3.56是这样表示的:010000011011110001111010
样表示的:110000011011110001111010
入第22到第0位。
位,得到0000011,各位取反,得到1111100,放入第29到第23位。
100000。其中最左边一位是第31位,最右边一位是第0位。
到第0位。
第29到第23位。
0000000。其中最左边一位是第31位,最右边一位是第0位。