zoukankan      html  css  js  c++  java
  • HDU 1298 Hat’s IEEE

    http://acm.hdu.edu.cn/showproblem.php?pid=1289

    对二进制数进行位运算。

    首先可以百度一下IEEE 754的规则。

    以6560.91为例:

    6560.91的二进制表示为1100110100000.111010001111010111,写成科学计数法就是1.100110100000111010001111010111 * 2^12

    s有一位,是符号位,为正数,符号位是0。e有八位,代表二进制数的指数,这时e就是12(sample输出的第一个数)。f代表有效部分,有23位,为100110100000111010001111010111 。

    所以,符号位是0
    然后用它的指数12加上127(注释中有解释)得到139 写成二进制是
    10001011
    再取23个有效位10011010000011101000111

    拼起来这三个数0-10001011-10011010000011101000111是01000101110011010000011101000111,十六进制就是0x45cd0747,这个数就是1.601785(sample输出的第二个数)

    View Code
    #include <stdio.h>
    int main ()
    {
        float f;
        int *pp=(int*)(&f);//把浮点型数f转化成2进制,取f地址存到整型指针里 
        int e;
        while(~scanf("%f",&f))
        {
            e=(*pp>>23)&0xff;//取中间八位指数 
            *pp&=0x807fffff;//把指数位全变为0 
            *pp|=0x3f800000;//把指数位变为01111111 
            printf("%d %f\n",e-127,f);//8位存指数,结果偏移127位,127表示指数为0 
        }
        return 0;
    }
  • 相关阅读:
    quickSort
    L1-3 宇宙无敌加法器
    deepin下用命令管理自己的Github仓库
    PAT 1008
    增量包算法,时间复杂度3n
    vue组件化-容器
    vue模块化设计
    语言语法糖Sugar
    虚拟dom节点,支持querySelector
    html语法树转html
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/2461433.html
Copyright © 2011-2022 走看看