博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
REPEAT_BYTE(x)宏
阅读量:5955 次
发布时间:2019-06-19

本文共 470 字,大约阅读时间需要 1 分钟。

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

转载地址:http://ytexx.baihongyu.com/

你可能感兴趣的文章
JS——特效秀
查看>>
在 Windows 上安装Rabbit MQ 指南
查看>>
【mybatis】mybatis使用java实体中定义的常量,或静态方法
查看>>
7.Git的版本退回
查看>>
第十周作业
查看>>
springboot系列(三) 启动类中关键注解作用解析
查看>>
LeetCode - Maximum Frequency Stack
查看>>
附加数据库后登陆报错
查看>>
冲刺总结
查看>>
事后诸葛亮
查看>>
Beta冲刺——day6
查看>>
前端:CheckBox事件函数js
查看>>
Comet OJ - Contest #3 题解
查看>>
[网络流24题-9]试题库问题
查看>>
jquery选择器详解
查看>>
【经典算法】第八回:桶排序
查看>>
Python自动化开发学习的第九周----线程、进程、协程
查看>>
html 5 新增标签及简介
查看>>
java反射 一些理解
查看>>
C# 保留2位小数
查看>>