【源码】jdk11源码-Integer.numberOfLeadingZeros(int i)

手把手教你用Trae配置Python开发环境(含Claude 3.5代码生成实战) 本文详细介绍了如何使用字节跳动推出的Trae智能开发环境配置Python开发环境,并实战演示了Claude 3.5代码生成功能。从环境准备到项目初始化,再到AI辅助编码和调试优化,全面展示了Trae在提升开发效率方面的强大能力,特别适合Python开发者快速搭建项目和解决复杂问题。 阅读详情

Integer.numberOfLeadingZeros(int i)源码如下:

public static int numberOfLeadingZeros(int i) {
	if (i <= 0) {
		return i == 0 ? 32 : 0;
	} else {
		int n = 31;
		if (i >= 65536) {
			n -= 16;
			i >>>= 16;
		}

		if (i >= 256) {
			n -= 8;
			i >>>= 8;
		}

		if (i >= 16) {
			n -= 4;
			i >>>= 4;
		}

		if (i >= 4) {
			n -= 2;
			i >>>= 2;
		}

		return n - (i >>> 1);
	}
}
  • 函数功能
    该方法的作用是返回无符号整形i的最高非零位前面的0的个数,包括符号位在内。
    如果i为负数,即符号位为1,则返回0
    比如10的二进制表示为00000000 00000000 00000000 00001010
    java的整型长度为32,那么这个方法返回的就是28

  • 分析
    很巧妙地应用了二分查找。
    将n初始化位31,因为i不为负数不为0的话,最大的结果应该为31。
    先把i分为了高16位和底16位,如果i > 2^16,则说明i的高16位存在1,则n -= 16,将i右移16位。
    若i > 2^8,则说明i的高8位存在1,则n -= 8,将i右移8位。
    若i > 2^4,则说明i的高4位存在1,则n -= 4,将i右移4位。
    若i > 2^2,则说明i的高2位存在1,则n -= 2,将i右移2位。
    最后得到结果n - (i >>> 1).

每当条件成立时,包含第一个非零位的那一半长度都会通过右移的方式减半,方便了后续的判断。

INMP441麦克风与ESP32的I2S音频采集实战指南 本文提供了INMP441数字麦克风与ESP32开发板通过I2S接口进行高质量音频采集的完整实战指南。详细讲解了硬件连接、软件配置、数据读取及基础处理,并分享了常见的避坑技巧与性能优化建议,帮助开发者快速构建物联网音频应用。 阅读详情

相关推荐

GD32H7系列SRAM优化配置实战指南

本文详细解析了GD32H7系列MCU的SRAM架构,包括ITCM、DTCM、AXI SRAM等关键内存区域的特点与性能差异。通过实战指南,指导开发者如何通过配置寄存器和链接脚本,优化内存布局以提升系统性能,并重点探讨了DMA操作与CPU缓存一致性的解决方案,帮助充分发挥GD32H7的高性能潜力。

weixin_29169899的博客 518

Integer.numberOfLeadingZeros()详解

在查看jdk13的HashMap源码时,发现tableSizeFor方法中用到了Integer的这个方法: public static int numberOfLeadingZeros(int i) { // HD, Count leading 0's if (i <= 0) return i == 0 ? 32 : 0; ...

weixin_39724194的博客 2335

使用moveit!控制真实机械臂(5)——编写真实机械臂节点中的action服务程序

上一篇文章中,我们简要介绍了ROS中action的基本知识,为了控制真实机械臂,我们已经修改了moveit配置文件,使得moveti启动后具备一个control_msgs::FollowJointTrajectoryAction类型的action客户端,接下来,我们完成该类型action的另一半,编写C++程序来实现action的服务端。由于底层机器人控制程序一般差别都很大,这里展示的只是编程要点...

爱学习的草莓熊 1万+

Integer.numberOfLeadingZeros

// 首先在jvm中一个int类型的数据占4个字节,共32位,其实就相当于一个长度为32的数组。 // 那我们要计算高位连续0的个数,就是从左边第一个位开始累加0的个数,直到遇到一个非零值。 public static int numberOfLeadingZeros(int i) { if (i == 0) return 32; int n = 1; // 下面的代码就是定位从左边开始第一个非零值的位置,在定位过程中顺便累加从左边开始0的个数 // 将i无.

淋雨西河的博客 739

MATPOWER的安装详细教程

MATPOWER的安装包实际为一个程序包,安装教程很简单,详见本文。

半个月亮Zz的博客 3万+

开题报告该怎么写

考研即将来临,而一般很多大学都会选择在考研结束之后开始安排选题和开题报考(考研之前一般都不谈,老师也很人性化的,不愿意耽误你的复习) 但无论怎么推迟,我们最终都需要去面对并完成这些任务。 现在我就要教大家该如何写一个完整的开题报告! 准备模板。不同的学校有不同的格式,一般情况你的导师会给你们一个学校的标准格式,这个不用太费心。有了模板我们就可以按照模板的“线索”一步一步填充完成即可! 一般大致格式可谓: 研究背景/论文的目的、背景和意义 我们需要写明选择该题目的...

wuyueweifeng的博客 1095

Java Integer.numberOfLeadingZeros()

对 i 进行判断,因为 int 型长度为 32,所以先判断 i 是不是大于 2^16,如果大于则无符号右移 16位,继续进行计算。例:10 的二进制为:0000 0000 0000 0000 0000 0000 0000 1010。返回无符号整型 i 的最高非零位前面的 0 的个数,包括符号位。如果 i 小于 0 则返回 0,等于 0 则返回 32。判断为 true,得到 n = 15,i = 4;判断为 true,得到n = 13, i = 1;最后相当于 13 - 0 = 13。

yake1965 610

从LLaMA到LLaMA-MoE:轻量级混合专家模型构建与实战指南

混合专家(Mixture-of-Experts, MoE)是一种先进的神经网络架构,其核心原理是通过门控网络动态地为不同输入选择不同的专家子网络进行计算,从而实现模型容量的指数级扩展,同时保持推理时的计算量基本不变。这种稀疏激活的特性赋予了MoE极高的技术价值,使其成为解决大模型训练与推理成本矛盾的关键技术之一,在自然语言处理、多模态学习等场景中展现出巨大潜力。本文聚焦于**LLaMA-MoE**这一具体实践,深入探讨了如何基于成熟的稠密模型(如LLaMA),通过**专家构建**与**持续预训练**两大关键

weixin_28730549的博客 565

Integer.numberOfLeadingZeros(i)方法的理解

// 这个处理逻辑很符合二分搜索树。 public static int numberOfLeadingZeros(int i) { // HD, Figure 5-6 if (i == 0) return 32; // 为什么是1呢?因为如果i不是0,那么就表明在二进制表示中其至少有一位为1。 int n...

zhunode的探索 5168

Playwright实战:打造绕过全维度前端反爬的无头浏览器爬虫(2026实战版)

Playwright绕过前端反爬的核心是模拟真实:真实的设备指纹、真实的行为轨迹、真实的网络请求;2025年前端反爬的核心检测维度是设备指纹+行为轨迹+网络请求,三者缺一不可;实战中需重点关注WebGL/Canvas指纹模拟、行为随机性、请求头完整性,这是绕过反爬的关键;性能优化需以“不触发反爬”为前提,优先选择浏览器复用、资源拦截,而非无限制并发。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2094

打开 AI 投研新时代 —— 深度解析 GitHub 高星项目 daily_stock_analysis

GitHub热门开源项目"daily_stock_analysis"是一款AI驱动的智能股票分析工具,能自动抓取行情数据、分析新闻语义并生成结构化报告。该项目采用Python开发,通过GitHub Actions实现全自动运行,支持邮件、企业微信等多渠道推送。核心功能包括AI决策仪表盘、多数据源整合和零成本部署方案,特别适合需要自动化投研辅助的个人投资者。项目强调其仅为分析工具而非投资建议,提醒用户注意AI模型的潜在误差。该工具通过智能化处理重复工作,帮助投资者提升决策效率,成为量化投资

陈奕昆的博客 1526

Integer类中的numberOfLeadingZeros和numberOfTrailingZeros方法

一、引例 今天在阅读 Integer 类的源码的时候,发现了两个比较有意思的方法, 频繁的使用位运算进行左移和右移操作, 分别是 numberOfLeadingZeros 方法和 numberOfTrailingZeros 方法。 二、numberOfLeadingZeros 这个方法从 JDK 1.5 以后开始出现,主要功能是返回无符号整型 i 的最高非零位前面的 0 的个数。 例如: 无符号整数 24 的二进制表示为 0000 0000 0000 0000 0000 0000 0001 1000,第五位

MarcoAsensio的博客 1973

基于STM32设计的ECG+PPG人体参数测量系统(华为云IOT)(217)

该系统的核心是基于STM32F103RCT6微控制器,这是一种高性能、低功耗的嵌入式处理器,适用于各种复杂的控制和数据处理任务。系统利用先进的传感器技术,如光电传感器PulseSensor模块来准确测量人体脉搏血氧饱和度及心率(PPG),同时采用AD8232生物电信号采集模块捕捉并处理人体的心电图信号(ECG),从而全面反映用户的心脏活动状态。

1万+

JDK11源码--HashMap源码分析

@[toc] 概述 本文介绍JDK11中HashMap的源码实现。 hashmap数据结构 map中存储的是key,value键值对。众所周知,hashmap是采用的 ==数组 + 链表 + 红黑树== 的数据结构存储数据的: 上图中,左侧方形表示的是数组,初始化状态长度是16。数组中每个元素我们这里称之为桶,桶存储的是key的hash值,每个桶后面挂载...

weixin_33979363的博客 218

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HashMap详细解读

目录 HashMap 的底层数据结构 什么时候用链表?什么时候用红黑树? 为什么链表转红黑树的阈值是8? 为什么转回链表节点是用的6而不是8 HashMap的容量计算 JDK8的计算代码: JDK11中的代码: 两者性能比较 key的hash值的计算 为什么要将 hashCode 的高16位参与运算? 为什么HashMap 的容量必须是 2 的 N 次方 为什么红黑树和链表都是通过 e.hash & oldCap == 0 来定位在新表的索引位置 HashMap是线程...

itsonglin的专栏 500

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java基础之---java Integer类内置方法浅析(1)

   Java 中Integer是int的派生类型,内置了一些常用的对int类型数据的处理方法下面对其简单的分析。  1, String toBinaryString(int i) 给定一个int类型数据,返回这个数据的二进制字符串。  示例:   int x=1; int y=2; int z=3; System.out.println(x+"的二进制表示为:"+I...

bewithme的专栏 321

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

巧妙使用位运算

java中的二进制操作很多地方都有很好的使用,比如HashMap源码中就利用了当n等于2的次幂时,"hash%n"和"hash&(n-1)"的特性,下面列举几个巧妙使用位运算的例子。 SpacePadder填充固定位 假设又一个StringBuffer要求要有n(20或者更多)个字符,如果不足,向右填充空格直到满足为止,一般最简单的方式就是for循环,一个个append直到满足n个字符,但是效率就不高了,牛逼的做法如下 public class SpacePadder { final st

gs_albb的博客 543

jdk源码学习笔记---Integer

jdk Integer类的源码分析

alw_123的博客 1516

Object类中的方法介绍

from:http://www.blogjava.net/jiafang83/archive/2008/12/05/244510.html  类Object是类层次结构的根类,每一个类都使用Object作为超类,所有对象(包括数组)都实现这个类的方法。jdk1.5中,描述了该类中的11个方法 1.getClass public final ClassObject> getClass(

linyushan11的专栏 2728

[Open JDK-11 源码解析系列]-1-过五关斩六将开发属于自己的jdk版本

1-克隆代码,代码构建 1.1 简介 这里主要做一下笔记,如果比较感兴趣也可以直接查阅官网open jdk building OpenJDK是JDK的开放源码版本,了解源码学习更优秀的编程思想。 1.2 克隆代码 git clone https://git.openjdk.java.net/jdk/ 切换分支到jdk-11+28 git checkout jdk-11+28 1.3 运行配置: bash configure 如果configure由于缺少依赖项(工具链、构建工具、外部库或引导JDK

宋小生-中间件 948

Java源码下载和阅读(JDK1.8/Java 11)

文章目录1.openjdk的Java源码2. Oracle 的Java源码 1.openjdk的Java源码 JDK10的源码可以直接从openjdk上下载.下载地址:openjdk-10_src.zip openjdk上也有jdk8的源码可供下载:openjdk-8u40.zip 2. Oracle 的Java源码 如果你的电脑上已经安装好了jdk1.8,那么Oracle 的Java源码已经在电...

个人博客 7823

ArrayList源码分析-jdk11 (18.9)

ArrayList 源码分析-jdk11 (18.9)1.概述2.源码分析2.1参数2.2 构造方法2.2.1 无参构造方法2.2.2 构造空的具有特定初始容量值方法2.2 .3构造一个包含指定集合元素的列表,按照集合的迭代器返回它们的顺序JDK-6260652 `(see e.g. https://bugs.openjdk.java.net/browse/JDK-6260652)`产生原因2.3常见方法2.3.1插入2.3.1.1元素序列尾部插入2.3.1.2元素序列指定位置(假设该位置合理)插入2.3.

yahe的博客 552

JDK11新特性【附源码】

JDK 11作为Java的长期支持版本,在语言特性和API方面进行了多项增强。主要包括:允许Lambda参数使用var声明并支持注解;新增字符串处理实用方法如isBlank()、lines()等;标准化HttpClient支持HTTP/2;简化文件读写操作;引入Optional.isEmpty()等新方法。同时新增了ZGC和Epsilon垃圾收集器,并将飞行记录器转为免费功能。这些改进提升了开发效率,优化了性能表现,为Java开发者提供了更现代化的工具支持。代码示例展示了var在Lambda中的使用、字符串

LeicyII的博客 1249

JDK11源码分析之集合类(一)----HashMap

一,首先需要拉取JDK11源码: 方便起见我给出芋道源码作者已经拉取好的openJDK11的GitHub地址只需要fork一下克隆到本地导入IDEA中就可以对源码分析了: https://github.com/YunaiV/openjdk 二,拉取成功导入项目成功后就开始分析源码了: 我们今天先分析HashMap源码: HashMap所属的包在:openjdk\src\java.base...

weixin_33827590的博客 214

JDK源码之Integer类——numberOfLeadingZeros()方法

方法功能:获取指定整数转换成二进制后的前导零的个数。 比如数字3的二进制是0000 0000 0000 0000 0000 0000 0000 0011,那么可以得到它的前置0有30位,最后两位是11。 该方法的源码如下: /** * Returns the number of zero bits preceding the highest-order * ("leftmost") one-bit in the two's complement binary repres

二木成林 615

jdk11 下载地址

jdk 11 官方下载地址 需要oracle 账号, 和国内下载网速比较慢,建议使用 openJDK。openJDK 11 下载地址。

Legendlijianfei的博客 1万+
上一篇: 【算法】LeetCode 1248 统计[优美子数组]
下一篇: 【踩错】解决ajax异步更新后控件的click事件失效的方法
皮皮蟹01
博客等级 码龄10年 29粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值