同事经常面试别人的一道题:
float f = 1.0f;
int i = (int&)f;
问i=?
我也被他问过次问题,可惜没有准确地答出来。后来还抱怨,
平常工作那会用到呀。
这次还真的用到了,要求把float类型的变量按位打印出来。
第一次尝试用下面代码:
#include <iostream>
using namespace std;
void main(){
float f = 1.0f;
unsigned int base = 1<<31;
for(int i=0;i<32;i++){
if((f&base)==0)
cout<<"0";
else
cout<<"1";
f = f<<1;
}
}
但是编译不过,因为不容许一个int类型和一个float类型做&操作。
于是就想到了那道题目。用一个int变量保存float值。
#include <iostream>
using namespace std;
void main(){
float f = 1.0f;
int k = (int&)f;
unsigned int base = 1<<31;
for(int i=0;i<32;i++){
if((k&base)==0)
cout<<"0";
else
cout<<"1";
k = k<<1;
}
}
通过了,呵呵。
这个小技巧还是很有用的。
分享到:
相关推荐
这主要是因为float类型变量是按照IEEE 754标准存储的,每个位代表的是特定的指数或尾数部分,位移操作会破坏这种编码规则,从而导致数据错误。比如,尝试将float变量的数据直接右移,编译器将报错,因为这种操作是...
### ESP8266支持Float类型修改方法 #### 背景介绍 ESP8266作为一款广泛应用于物联网(IoT)领域的低成本且高性能的Wi-Fi芯片,因其集成了强大的处理能力和无线通信能力而备受青睐。对于开发人员来说,能够高效地...
标题提到的问题是“自己写的printf不能输出float型的数据”,这通常意味着用户尝试实现了一个自己的`printf`函数,但该函数不支持浮点数(float)的输出。 在C语言中,`printf`函数的灵活性来自于其格式化字符串,...
下面是一段C++代码,用于打印出`float`类型的二进制表示: ```cpp #include void printFloatBit(float f) { int i, j; unsigned int byte = 0; char ch, *p; p = (char*)(&f); printf("%20.7f:", f); for ...
float类型的存储结构** `float`包含三个部分:符号位(Sign)、指数位(Exponent)和尾数位(Fraction)。在32位的`float`中,分配如下: - 符号位:1位,0代表正,1代表负。 - 指数位:8位,用偏移量(Bias)表示...
对于32位单精度浮点数(float),它包含一个符号位、8位指数和23位尾数。 在Linux中,可以使用C/C++语言的标准库函数来完成浮点数到十六进制的转换。其中,`std::stringstream` 和 `std::hexfloat` 可以方便地完成...
在C语言中,`float`通常占用4字节(32位),符合IEEE 754标准,可以表示大约6-9个有效数字。 2. **字符型(`char`)简介** `char`是C语言中的基本数据类型之一,通常用来存储单个字符。在ASCII编码中,`char`占用1...
- `float lDec`:需要打印的浮点数值。 - 该函数没有返回值。 #### 1.3 实现细节 - **整数部分处理**: - 首先判断浮点数是否为负数,如果是,则先输出负号“-”,然后取其绝对值进行后续处理。 - 将浮点数的整数...
在C语言中,结构体是一种复合数据类型,它允许我们将不同类型的数据组合在一起形成一个新的数据类型。在这个例子中,我们创建了一个表示职工信息的结构体,包括姓名、部门和工资等属性。接着,我们使用结构体数组来...
C++中的`float`类型占用4字节,能精确表示约7位有效数字。 2. **从键盘输入稀疏矩阵的各元素**:用户将被要求通过键盘输入稀疏矩阵的所有非零元素。在C++中,这可以通过标准输入流`std::cin`来实现。程序需要读取...
在Java编程语言中,`float`类型是一种单精度浮点数,它占据4个字节(32位)的空间。浮点数的表示遵循IEEE 754标准,该标准定义了如何用二进制来表示不同的数值,包括正负数、零、无穷大以及非数字(NaN)。 首先,...
现在,每当我们需要添加新的数据类型打印,例如浮点数,我们只需定义一个新的打印函数`printFloat(float num)`,然后在需要的地方调用`printAny(printFloat, &myFloat)`,其中`myFloat`是你要打印的浮点数值的地址。...
例如,`%f`可以用来打印浮点数,后跟一个可选的小数位数,如`%.2f`表示保留两位小数。在其他编程语言中,如Python,可以使用`format`函数或者`str.format`方法来达到同样的效果。 在嵌入式系统中,由于资源有限,...
根据给定文件的信息,本文将深入探讨如何使用Java打印表格到A4纸上,并解析相关代码实现。这将涉及Java打印的基础知识、API介绍以及具体的代码实现细节。 ### Java打印基础知识 在Java中,打印功能主要通过`java....
通过理解并应用这些知识点,开发者可以扩展到其他类型的文档打印,例如文本、PDF或者自定义报表。 首先,我们需要引入System.Drawing命名空间,它包含了处理图形和图像所需的类。`using System.Drawing;` 语句将使...
在实际应用中,有时我们需要将`DataGridView`中的数据打印出来,方便用户进行查看或保存。本示例将详细讲解如何实现`DataGridView`的打印功能,并提供源码供参考。 首先,我们需要了解`DataGridView`的基本用法。`...
通过这些步骤,你可以创建一个C#应用程序,允许用户选择文件并将其打印出来。这只是一个基本的实现,实际应用可能需要考虑更多细节,比如页面设置、字体选择、多页布局等。不过,这个基础足以让你开始构建自己的文件...
另外,`double`类型的数值123456789123.456765被赋值给`float`变量`b`,同样因为精度限制,`float`无法完全保留这个大数值的精度,导致打印的结果不准确。 在进行浮点数比较时,由于浮点数的表示存在精度误差,直接...
例如,`int`通常表示32位整数,`float`是单精度浮点数,占用32位,而`double`是双精度浮点数,占用64位。 3. **字面常量**:字面常量是程序中直接出现的固定不变的值,如数字(整数或浮点数)、字符(如'a'或'\n')...