16进制如何取出分高位和低位_异或运算只具有两个输入逻辑变量

16进制如何取出分高位和低位_异或运算只具有两个输入逻辑变量为什么要先高16位异或低16位再取模运算

大家好,又见面了,我是你们的朋友全栈君。

我们知道,n代表的是table的长度length,之前一再强调,表table的长度需要取2的整数次幂,就是为了这里等价这里进行取模运算时的方便——取模运算转化成位运算公式:a%(2^n) 等价于 a&(2^n-1),而&操作比%操作具有更高的效率。
  当length=2n时,(length – 1)正好相当于一个”低位掩码”,”与”操作的结果就是散列值的高位全部归零,只保留低位,用来做数组下标访问:

16进制如何取出分高位和低位_异或运算只具有两个输入逻辑变量

可以看到,当我们的length为16的时候,哈希码(字符串“abcabcabcabcabc”的key对应的哈希码)对(16-1)与操作,对于多个key生成的hashCode,只要哈希码的后4位为0,不论不论高位怎么变化,最终的结果均为0。也就是说,如果支取后四位(低位)的话,这个时候产生”碰撞”的几率就非常大(当然&运算中产生碰撞的原因很多,这里只是举个例子)。为了解决低位与操作碰撞的问题,于是便有了第二步中高16位异或低16位的“扰动函数”。
右移16位,自己的高半区和低半区异或,就是为了混合原始哈希码的高位和低位,以此来加大低位随机性。

16进制如何取出分高位和低位_异或运算只具有两个输入逻辑变量

可以看到: 扰动函数优化前:1954974080 % 16 = 1954974080 & (16 – 1) = 0 扰动函数优化后:1955003654 % 16 = 1955003654 & (16 – 1) = 6 很显然,减少了碰撞的几率。

转载于:https://www.cnblogs.com/Profound/p/10879101.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106819.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm无法连接服务器_pycharm部署项目到服务器

    pycharm无法连接服务器_pycharm部署项目到服务器Pycharm连接服务器Pycharm连接服务器是最为常用的内容,本文记录了Pycharm连接服务器的方法。BlueStragglers分享技术成长的乐趣目录Pycharm连接服务器1.操作步骤1.1创建连接1.2新建项目1.3运行配置2.常见问题2.1不显示Package1.操作步骤1.1创建连接首先,需要创建连接。进入Tools→Deployment→Configuration,打开配置页面。在Deployment页面的Connection

    2022年8月29日
  • 关于 Sensor flicker/banding现象的解释「建议收藏」

    关于 Sensor flicker/banding现象的解释「建议收藏」目录1、基本概念2、30fps,1帧内banding过程演示3、30fps,帧与帧之间banding过程演示4、25fps,帧与帧之间banding过程演示5、总结flicker交流电网中的传输的能量并不是稳定不变的,而是随着一个固定频率变化的,这个频率一般被称为工频,例如中国是50Hz,美国是60Hz。工频由电力系统决定。工频的带来的这种能量变化称为flicker。下面以50HZ为例进行解释,交流电以1/50s,即20ms的周期进行变化,其变化规律如图所示:而对于能量来说,并没有正负之分,因此能量

    2022年10月13日
  • Glance详解_glance of

    Glance详解_glance ofGlance简介Glance是OpenStack平台中负责镜像服务的组件,其功能包括系统镜像的查找、注册和获取等,简单来说glance的功能就是用户可以通过其提供的RESTAPI查询和获取镜像元数据。glance负责OpenStack中的ImageService,那么Image是什么,简单来说Image就是一个模板,里面包含各种常用的操作系统和软件,这样用户在租用OpenStack服务后就…

    2022年10月25日
  • 解析PHP的self关键字

    解析PHP的self关键字

    2022年2月8日
  • Git Windows下载安装详细教程

    Git Windows下载安装详细教程首先登录Git官网:https://git-scm.com/1.点击Download下载2.选择版本默认64位3.点击安装程序(这里是我之前下载的2.23版本)4.进入安装界面点击next到选择组件界面(这里1是在桌面创建图标,2是决定在所有控制台窗口中使用TrueType字体和是否每天检查Git是否有Windows更新的)根据需要选择,这里我没有选择第二个。点击next到选择gi…

    2022年5月29日
  • 数据归一化和两种常用的归一化方法

    数据归一化和两种常用的归一化方法数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:一、min-max标准化(Min-MaxNormalization)也称为离差标准…

    2022年6月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号