`
Aoogoo
  • 浏览: 21522 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

怎么把float类型按位打印出来

阅读更多
同事经常面试别人的一道题:
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;
	}
}

通过了,呵呵。
这个小技巧还是很有用的。
0
0
分享到:
评论
2 楼 Aoogoo 2010-04-29  
不好意思,让大家没有看懂。
我们知道float变量在内存中的表示是遵循IEEE的标准的,
不像int,short,long之类那么简单。
这段程序就是想把float变量中的内存表示打印出来。
1 楼 boyhailong 2010-04-28  
不怎么理解啊,博主能否把代码解释下啊?

相关推荐

    如何把float类型变量发送到串口调试助手

    这主要是因为float类型变量是按照IEEE 754标准存储的,每个位代表的是特定的指数或尾数部分,位移操作会破坏这种编码规则,从而导致数据错误。比如,尝试将float变量的数据直接右移,编译器将报错,因为这种操作是...

    ESP8266支持float类型修改方法

    ### ESP8266支持Float类型修改方法 #### 背景介绍 ESP8266作为一款广泛应用于物联网(IoT)领域的低成本且高性能的Wi-Fi芯片,因其集成了强大的处理能力和无线通信能力而备受青睐。对于开发人员来说,能够高效地...

    自己写的printf,但是不能输出float型的数据

    标题提到的问题是“自己写的printf不能输出float型的数据”,这通常意味着用户尝试实现了一个自己的`printf`函数,但该函数不支持浮点数(float)的输出。 在C语言中,`printf`函数的灵活性来自于其格式化字符串,...

    C++中float在内存中的表示

    下面是一段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和double类型数据在内存中的存储方法

    float类型的存储结构** `float`包含三个部分:符号位(Sign)、指数位(Exponent)和尾数位(Fraction)。在32位的`float`中,分配如下: - 符号位:1位,0代表正,1代表负。 - 指数位:8位,用偏移量(Bias)表示...

    float-to-hex.zip_float_float linux_float 转hex_hex float

    对于32位单精度浮点数(float),它包含一个符号位、8位指数和23位尾数。 在Linux中,可以使用C/C++语言的标准库函数来完成浮点数到十六进制的转换。其中,`std::stringstream` 和 `std::hexfloat` 可以方便地完成...

    float_2_char.zip_C51 float转char_单片机 浮点数_浮点数 char_浮点数 转换_浮点数转换

    在C语言中,`float`通常占用4字节(32位),符合IEEE 754标准,可以表示大约6-9个有效数字。 2. **字符型(`char`)简介** `char`是C语言中的基本数据类型之一,通常用来存储单个字符。在ASCII编码中,`char`占用1...

    uart_float

    - `float lDec`:需要打印的浮点数值。 - 该函数没有返回值。 #### 1.3 实现细节 - **整数部分处理**: - 首先判断浮点数是否为负数,如果是,则先输出负号“-”,然后取其绝对值进行后续处理。 - 将浮点数的整数...

    职工结构体数组,从键盘输入N位职工信息,打印输出最高的工资

    在C语言中,结构体是一种复合数据类型,它允许我们将不同类型的数据组合在一起形成一个新的数据类型。在这个例子中,我们创建了一个表示职工信息的结构体,包括姓名、部门和工资等属性。接着,我们使用结构体数组来...

    gongchengruanjian.zip_float

    C++中的`float`类型占用4字节,能精确表示约7位有效数字。 2. **从键盘输入稀疏矩阵的各元素**:用户将被要求通过键盘输入稀疏矩阵的所有非零元素。在C++中,这可以通过标准输入流`std::cin`来实现。程序需要读取...

    Java中float类型的范围及其与十六进制的转换例子

    在Java编程语言中,`float`类型是一种单精度浮点数,它占据4个字节(32位)的空间。浮点数的表示遵循IEEE 754标准,该标准定义了如何用二进制来表示不同的数值,包括正负数、零、无穷大以及非数字(NaN)。 首先,...

    函数指针万能打印_C++_VS_

    现在,每当我们需要添加新的数据类型打印,例如浮点数,我们只需定义一个新的打印函数`printFloat(float num)`,然后在需要的地方调用`printAny(printFloat, &myFloat)`,其中`myFloat`是你要打印的浮点数值的地址。...

    float_to_char.rar_float_float_ch_point floating lcd_浮点数 char_浮点数

    例如,`%f`可以用来打印浮点数,后跟一个可选的小数位数,如`%.2f`表示保留两位小数。在其他编程语言中,如Python,可以使用`format`函数或者`str.format`方法来达到同样的效果。 在嵌入式系统中,由于资源有限,...

    用 Java 打印表格 到A4纸的可用代码

    根据给定文件的信息,本文将深入探讨如何使用Java打印表格到A4纸上,并解析相关代码实现。这将涉及Java打印的基础知识、API介绍以及具体的代码实现细节。 ### Java打印基础知识 在Java中,打印功能主要通过`java....

    C#打印操作实例--图片打印源码

    通过理解并应用这些知识点,开发者可以扩展到其他类型的文档打印,例如文本、PDF或者自定义报表。 首先,我们需要引入System.Drawing命名空间,它包含了处理图形和图像所需的类。`using System.Drawing;` 语句将使...

    c#winform datagridview打印整个列表的例子,源码奉上

    在实际应用中,有时我们需要将`DataGridView`中的数据打印出来,方便用户进行查看或保存。本示例将详细讲解如何实现`DataGridView`的打印功能,并提供源码供参考。 首先,我们需要了解`DataGridView`的基本用法。`...

    C#实现文件打印功能

    通过这些步骤,你可以创建一个C#应用程序,允许用户选择文件并将其打印出来。这只是一个基本的实现,实际应用可能需要考虑更多细节,比如页面设置、字体选择、多页布局等。不过,这个基础足以让你开始构建自己的文件...

    第2章 C运算符和表达式-6赋值中的自动类型转换(下)1

    另外,`double`类型的数值123456789123.456765被赋值给`float`变量`b`,同样因为精度限制,`float`无法完全保留这个大数值的精度,导致打印的结果不准确。 在进行浮点数比较时,由于浮点数的表示存在精度误差,直接...

    C++Primer第五版 第2章 变量和基本类型(练习解答)

    例如,`int`通常表示32位整数,`float`是单精度浮点数,占用32位,而`double`是双精度浮点数,占用64位。 3. **字面常量**:字面常量是程序中直接出现的固定不变的值,如数字(整数或浮点数)、字符(如'a'或'\n')...

Global site tag (gtag.js) - Google Analytics