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进制计算更方便和省事。

  • 相关阅读:
    webpack 知识点
    freemarker知识点
    js知识点
    oracle 安装介绍
    CentOS 7.4x64 系统安装完成后配置
    centos 7 互信【ssh】
    spark与mapreduce的最大区别和spark原理
    最简单的搭建SpringBoot框架步骤
    simplify(s)
    ezplot函数
  • 原文地址:https://www.cnblogs.com/litifeng/p/7729276.html
Copyright © 2011-2022 走看看