折木H.O. 2020-09-25 19:27 采纳率: 0%
浏览 152
已采纳

Linux kernel中出现的int_to_frac()的意义什么?

在linux kernel的源代码中有用到int_to_frac()和frac_to_int()函数,如下所示

#define FRAC_BITS 10
#define int_to_frac(x) ((x) << FRAC_BITS)
#define frac_to_int(x) ((x) >> FRAC_BITS)

由代码可看出,作用是将x左/右移10个bit,即乘以1024(2^10)或除以1024。
那么,这种运算的实际意义是什么?仅仅是把数字变大或缩小吗?
另外,这个frac指的是哪个英文单词?fraction?

以上疑问,有没有大佬帮忙解答一下,谢谢。

  • 写回答

2条回答 默认 最新

  • SSL_TJH 2020-09-26 11:14
    关注

    就是让x在二进制中抹掉右边的多少位或者在右边加多少个0。
    举个例子:x=11,那二进制就是1011,那 << 2 就是 101100 (就是在右边加上两个 0 ),就相当于 * (2^2)
    那 >> 2 就是 10 (就是把右边的最后两位 "11" 不要),就相当于 /(2^2) 。(这里的 / 是整除)

    我们就可以利用这个东西做一些位运算的操作,比如把x在二进制中的某一位变成0或者1,取出 x 在二进制中的第 i 位到第 j 位,等等

    frac好像是分数的意思

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?