zoukankan      html  css  js  c++  java
  • REPEAT_BYTE(x)宏

    位置:include/linux/kernel.h

    定义:

    #define REPEAT_BYTE(x)  ((~0ul / 0xff)*(x))

    作用:结果看下面,作用未知,好像是为了一个叫:word_at_a_time的宏,哎。

    重点1:什么是0UL

    UL是c语言中的常量后缀,用于整型常量。字母U代表unsigned,字母L代表Long,0UL表示这个整型常量0的类型为无符号长整型。

    ~0UL就是对该数进行求反运算,在64位机子上,结果是:0Xffffffffffffffff(共16个f)

    重点2:二进制除法

    因为2进制只有2个数,除0是非法的,所以只能除1,那么:0Xffffffffffffffff / 0Xff = 0X0101010101010101

     重点3:二进制乘法

    虽然x是未知数,但最终均以二进制形式表达。假设:x=12,也就是16进制的c,即:x=c,那么整个表达式的结果:0XC0C0C0C0C0C0C0C

    为啥要转换为16进制呢?答案是二进制的乘法太抽象了也太长太麻烦了,所以转换为16进制计算更方便和省事。

  • 相关阅读:
    Linux基础命令grep(如何过滤字符串)
    Linux基础命令wc(如何统计文件的行数?如何统计文件的字节数?)
    Linux基础命令tr(如何替换字符)
    django4
    django3
    django2
    django1
    jQuery2
    jQuery1
    事件
  • 原文地址:https://www.cnblogs.com/litifeng/p/7729276.html
Copyright © 2011-2022 走看看