`
lighter
  • 浏览: 501040 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

读源码之旅 有意思的Integer类

阅读更多
Integer类里面有如下一段代码:
   
final static char[] digits = {
	'0' , '1' , '2' , '3' , '4' , '5' ,
	'6' , '7' , '8' , '9' , 'a' , 'b' ,
	'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
	'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
	'o' , 'p' , 'q' , 'r' , 's' , 't' ,
	'u' , 'v' , 'w' , 'x' , 'y' , 'z'
    };

    private static String toUnsignedString(int i, int shift) {
	char[] buf = new char[32];
	int charPos = 32;
	int radix = 1 << shift;
	int mask = radix - 1;
	do {
	    buf[--charPos] = digits[i & mask];
	    i >>>= shift;
	} while (i != 0);

	return new String(buf, charPos, (32 - charPos));
    }


这一段代码完整地说明了十进制转化为二进制,八进制,十六进制整个流程,toUnsignedString方法的shift的参数,当shift为1是为二进制,当shift为3是八进制,当shift为4是十六进制。
引用

举例:当toUnsignedString(100,4)时,输入为:64


上例中,十进制100对于二进制为0110 0100,转化为十六进制时传入的shift值为4,具体转化的算法如下:
第一步:从 0110 0100 拿出最后的相对应shift的值的个数,这里为0100,再和1111(这一个值是从1 << shift得到的)相与
  
0100
& 1111
————
  0100
  
得出的0100,相当十进制的 4,得到4后,从digits 数组里面拿出下标为4里面的值,此处也为4

第二步:
将0110 0100右移shift的值的个数,变为0000 0110,拿出最后的相对应shift的值的个数,这里为0110,再和1111相与
  0110
& 1111
————
  0110  

得出的0110,相当十进制的 6,得到6后,从digits 数组里面拿出下标为6里面的值,此处也为6

所以我们就得到了十六进制的64,其他的进制转化也差不多类似的。

分享到:
评论
1 楼 yangwen13 2010-06-02  
对于<<,>>>,&总很难理解透彻,哎~

相关推荐

    精仿有意思吧PHP源码(类豆瓣清新风格)

    【标题】"精仿有意思吧PHP源码(类豆瓣清新风格)"所涉及的知识点主要集中在PHP编程语言和网站设计上,尤其是对豆瓣风格界面的模仿。这个项目旨在创建一个具有类似豆瓣网用户体验的清新风格网站,适用于文学、情感、...

    3D角色扮演网游《风火之旅服务端》完整C++源码

    风火之旅服务端完整源码,这个是真正的风火之旅服务端源码,并非QQ西游,编译的时候把那些乱七八糟的备注给改掉就可以了,能整理出来相当不容易了,不喜勿下,解压后600MB左右,c++开发。 曾经比较火的一款3D角色扮演...

    麦淘商城带教程源码,非常有意思的一套东西

    一、定位:以区块链为底层技术的电商平台, 二、逻辑:消费购买力可产出MTSC,MSTC可用于购物以及交易后续的生态支付 三、特点:无需投资,即可加入。两种交易方式,实时交易:平台交易立马变现。...

    html静态旅游网站源码

    这类网站通常不依赖服务器端的动态处理,而是预先编写好页面内容,用户访问时直接加载已完成的页面,从而提供快速的浏览体验。 在这款"html静态旅游网站源码"中,我们可以推测其主要包含以下知识点: 1. HTML结构...

    54--[太空之旅].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码

    54--[太空之旅].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码54--[太空之旅].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码54--[太空之旅].zip源码scratch2.0 3.0编程项目源文件源码案例素材源...

    仿58同城赶集网源码

    分类源码,信息发布网站源码,信息源码,信息港网站源码,asp信息港源码,信息类网站源码,多种分类源码,信息网源码下载,asp信息网源码,信息发布系统源码,物流信息源码,房产信息网源码.net源码,公安信息网源码,家教信息...

    scratch3源码冒险之旅

    scratch3源码冒险之旅本资源系百度网盘分享地址

    c# winform 原来机箱中的主板能唱歌 发出很多美妙的声音 源码 很有意思 和大家一起看看

    c# winform 原来机箱中的主板能唱歌 发出很多美妙的声音 源码 很有意思 和大家一起看看 _(\_/) ,((((^`\ (((( (6 \ ,((((( , \ ,,,_ ,((((( /"._ ,`, ((((\\ ,... ,(((( / `-.-' ))) ;' `"'"'""(((( ( ...

    一个有意思的闹钟程序源码

    标题中的“一个有意思的闹钟程序源码”表明这是一个与编程相关的项目,具体是关于创建一个闹钟应用的源代码。这个程序可能具有独特的设计或功能,使得它在众多闹钟程序中显得有趣或与众不同。 描述中的“这是本人一...

    旅旅游网门户源码(带论坛)

    源码(带论坛)四川旅游幸福之旅旅游网门户源码

    python写的旅游网站源码

    这是由Python写的网站源码,采用了Python里最强大的后端框架Django,该网站所实现的功能是为旅游者提供乡间小屋预订、租住服务,对希望学习利用Python+Django进行网站建设的开发者而言是一个难得的示例。

    Integer IntegerCache源码阅读

    在源码中,`IntegerCache` 类起着关键作用。 `IntegerCache` 是一个内部私有静态类,它维护了一个缓存数组,用于存储-128到127之间的 `Integer` 对象。这个范围的选择是因为这些数值在Java虚拟机(JVM)中会被自动...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    小清新文章站源码 v1.1.rar

    适用范围: 文章站源码,小清新源码,仿有意思吧源码,资讯站源码,DEDE文章模板 运行环境: PHP、MYsql [dede v5.7内核] 安装说明:见压缩包内安装教程 其他说明:dede小清新文章站源码,适用于美图,唯美图片,...

    unity3D战旗类回合制格斗游戏源码

    本项目"unity3D战旗类回合制格斗游戏源码"是一个集成了战棋策略元素与格斗游戏玩法的独特游戏,提供了丰富的交互体验和深度的战术设计。 战旗类游戏,又称策略角色扮演游戏(SRPG),通常包含网格状的地图,玩家...

    php小清新文章站源码v1.1

    源码简介 : 演示地址:以截图为准 适用范围: 文章站源码,小清新源码,仿有意思吧源码,资讯站源码,DEDE文章模板 演示地址:以截图为准 运行环境: PHP、MYsql [dede v5.7内核] 安装说明:见压缩包内安装教程 其他...

    旅游日记--Android源码

    【旅游日记--Android源码】项目是一个专门为旅行爱好者设计的应用程序,它允许用户记录和分享他们的旅行经历。这个项目的源码公开,旨在为开发者提供一个参考实例,展示如何在Android平台上构建类似应用。通过分析和...

    Android快速开发系列 10个常用工具类 程序源码

    本资源"Android快速开发系列 10个常用工具类 程序源码"提供了10个实用的工具类,旨在帮助开发者更快捷地完成日常开发工作。以下是对这些工具类的详细解释: 1. **StringUtil**: 字符串处理工具类,包括字符串格式化...

    移动医疗APP源码 android (安卓版)妙手医生源码

    源码中可能有专门的Model类来封装数据,Presenter层来处理逻辑,以及View层来展示UI更新。 4. **网络通信**:移动医疗APP通常需要与服务器交互,获取或上传数据。这可能涉及到HTTP/HTTPS请求,使用如Retrofit或...

    收集的一些有意思的项目

    标题 "收集的一些有意思的项目" 暗示了这个压缩包可能包含了一系列有趣或者创新的编程项目,可能是由个人开发者或小团队创作的。这些项目可能涵盖各种编程语言、技术领域和应用类型,旨在提供学习、探索或启发新思维...

Global site tag (gtag.js) - Google Analytics