#include<stdio.h>typedefunsigned float_bits;
float_bits float_negate(float_bits f){unsigned sig = f>>31;unsigned e =(f>>23)&0xff;unsigned frac = f&0x7fffff;unsigned res =(e<<23)|frac;if(e==0xff&&frac)
res = f;return res;}intmain(){printf("%x\n",float_negate(114514));}
P93
#include<stdio.h>typedefunsigned float_bits;
float_bits float_absval(float_bits f){unsigned sig = f>>31;unsigned e =(f>>23)&0xff;unsigned frac = f &0x7FFFFF;if((e ==0xFF)&&(frac !=0)){return f;}return0<<31| e <<23| frac;}intmain(){printf("%u\n",float_absval(-1919810));}
P94
#include<stdio.h>typedefunsigned float_bits;
float_bits float_twice(float_bits f){unsigned sig = f >>31;unsigned e = f >>23&0xFF;unsigned frac = f &0x7FFFFF;if(e ==0xFF){return f;}if(e ==0){
frac <<=1;}elseif(e ==(0xFF-1)){
e =0xFF;
frac =0;}else{
e +=1;}return sig <<31| e <<23| frac;}intmain(){printf("%f\n",float_twice(0x11451419));}
P95
#include<stdio.h>typedefunsigned float_bits;
float_bits float_half(float_bits f){unsigned sig = f>>31;unsigned e =(f>>23)&0xff;unsigned frac = f&0x7fffff;unsigned tail = f&0x7ffffffff;if(e==0xff)return f;int ass =(frac&0x3)==0x3;if(e==0){
frac=frac>>1;
frac=frac+ass;}elseif(e==1){
tail=tail>>1;
tail=tail+ass;
e=(tail>>23)&0xff;
frac=tail&0x7fffff;}else{
e=e-1;}return sig<<31|e<<23|frac;}intmain(){printf("%f\n",float_half(114514.1919810));}
P96
#include<stdio.h>typedefunsigned float_bits;intfloat_f2i(float_bits f){unsigned sig = f>>31;unsigned e =(f>>23)&0xff;unsigned frac = f&0x7fffff;unsigned bias =0x7f;int val;//numunsigned E;unsigned M;if(e>=0&&e<bias+0)
val =0;elseif(e>=31+bias)
val =0x80000000;else{
E = e-bias;
M = frac|0x800000;if(E>23){
val = M<<(E-23);}else{
val = M>>(23-E);}}if(sig)return-val;elsereturn val;}intmain(){printf("%f\n",float_f2i(0xffaaffaa));}