位运算

 

 

#include "windows.h"  // 经指正已将类型改为unsigned(因为只有unsigned有位运算)可能还有好多问题XD
#include<stdio.h>

int main(void)  // 这道题是我最后做的。我尝试了很多方法还是没法直接读x在内存中的数据,只好用一个int指针赋值了
//应该有更好的指针的类型来赋值,但是我想了想没想到,最后符号位-1并不是真的是-1,只是想表达符号
{
  float x = -0.001001;
    
  unsigned int *p = &x;
  unsigned int sign;  // 符号
  unsigned int e;  // 指数位
  e = *p >> 23; // 将指数位和符号位赋值给e
  *p = *p - e << 23;
  sign=e >> 8;
  e -= sign * 256;  // e位指数位
  
  printf("%xh\n", *p);  // 尾数部分
  printf("%xh\n", e);  // 指数部分
  printf("%dd",sign);  // 符号位

}

 

说点什么

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒