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

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条)

报告相同问题?

悬赏问题

  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误