Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >java中的Integer的toBinaryString()方法

java中的Integer的toBinaryString()方法

作者头像
Hongten
发布于 2018-09-13 03:24:33
发布于 2018-09-13 03:24:33
94000
代码可运行
举报
文章被收录于专栏:HongtenHongten
运行总次数:0
代码可运行

在一次面试的过程中,遇到过这样的题目,题目的大概意思是:让写出Integer类中的toBinaryString()方法

也就是说,把Integer转换为Binary的过程写出来

但是我蒙的,在查了JDK的源码,发现了这个很好用的方法,在此给大伙看看

下面是我做的一个测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 /**
 2  * 
 3  */
 4 package com.b510.test;
 5 
 6 /**
 7  * @author Hongten
 8  * @date 2013-12-15
 9  */
10 public class TestF {
11 
12     public static void main(String[] args) {
13         //output:1000
14         System.out.println(toBinaryString(8));
15         //printInfo();
16     }
17     
18     /**
19      * 这里是做&操作的测试,也就是说,在1&*(其中*代表其他数字,如:0,1,2,3,4...)操作的时候
20      * 他们是进行二进制之间的&(与)运算操作。只有当*为奇数(1,3,5,7...)的时候,1*&操作才可以返回:1
21      * 其他情况返回:0
22      */
23     private static void printInfo(){
24         for(int i =0; i< 10; i++){
25             System.out.println("i= " + i + "         "+(i & 1));
26         }
27         /*
28         output:
29         i= 0         0
30         i= 1         1
31         i= 2         0
32         i= 3         1
33         i= 4         0
34         i= 5         1
35         i= 6         0
36         i= 7         1
37         i= 8         0
38         i= 9         1
39         */
40     }
41     
42     public static String toBinaryString(int i) {
43         return toUnsignedString(i, 1);
44     }
45 
46     /**
47      * Convert the integer to an unsigned number.
48      */
49     private static String toUnsignedString(int i, int shift) {
50         char[] buf = new char[32];
51         int charPos = 32;
52         int radix = 1 << shift;
53         int mask = radix - 1;
54         do {
55             //这里的mask一直为:1,所以当i为奇数的时候,这里"i & mask"操作才为:1
56             //否则返回:0
57             //System.out.println(i & mask); 
58             buf[--charPos] = digits[i & mask];
59             i >>>= shift;//右移赋值,左边空出的位以0填充
60         //System.out.println(buf);
61         //System.out.println(charPos);
62         //System.out.println(i);
63         } while (i != 0);
64         return new String(buf, charPos, (32 - charPos));
65     }
66     
67     final static char[] digits = {
68         '0' , '1' , '2' , '3' , '4' , '5' ,
69         '6' , '7' , '8' , '9' , 'a' , 'b' ,
70         'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
71         'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
72         'o' , 'p' , 'q' , 'r' , 's' , 't' ,
73         'u' , 'v' , 'w' , 'x' , 'y' , 'z'
74         };
75 }

在代码中,其实我们可以简化一下digits数组,因为我们只会用到数组:digits[0],digits[1]

所以:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 final static char[] digits = {
2         '0' , '1' 
3         };

方法里面用到了移位操作和&操作,这两个操作是关键。

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-12-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java中的移位运算符:<<,>>,>>>总结
value >>> num     --   num 指定要移位值value 移动的位数。
Hongten
2018/09/13
9380
JDK1.8源码(二)——java.lang.Integer 类
  上一篇博客我们介绍了 java.lang 包下的 Object 类,那么本篇博客接着介绍该包下的另一个类 Integer。在前面 浅谈 Integer 类 博客中我们主要介绍了 Integer 类 和 int 基本数据类型的关系,本篇博客是从源码层次详细介绍 Integer 的实现。 1、Integer 的声明 public final class Integer extends Number implements Comparable<Integer>{}   Integer 是用 final 声明的
IT可乐
2018/03/30
9910
JDK1.8源码(二)——java.lang.Integer 类
一看就懂的快速排序方法_java版
=================================================
Hongten
2018/09/13
2.8K0
一看就懂的快速排序方法_java版
java中静态变量和实例变量到底有什么区别_看了就知道啦
==================================================
Hongten
2018/09/13
4200
java中静态变量和实例变量到底有什么区别_看了就知道啦
包装类Integer和String互相转换
一、包装类Integer和String互相转换 package com.joshua317; public class Main { public static void main(String[] args) { Integer i = 100; //包装类Integer ---> String //方式一:直接后面跟空字符串 String str1 = i + ""; //方式二:调用String类的静态方法v
joshua317
2021/11/30
3400
十进制转二进制方法解析(Inteager.toBinaryString)
该方法是Inteager中附带的方法,现将其调用提取出来方便参考,附带了原注解。(等于没解析
Diuut
2022/11/22
3750
走进 JDK 之 Long
上一篇文章 走进 JDK 之 Integer 解析了 Integer.java,而 Long.java 和 Integer.java 的源码结构几乎是一模一样的,所以这篇文章会写的比较简略,没有细读过 Integer.java 源码的可以先看一下我的上一篇文章。这里就简单介绍一下 Long 以及源码中和 Integer 的细微区别。
路遥TM
2021/08/31
4440
Java 基础 -- 基础字符 char
char 在 Java 中是个很底层的东西了,比如 String 、StringBuilder 的底层就是它,但是在我们平时的工作中呢,很少使用他,不过既然是底层,今天我们大家就来一起研究下这 “哥们”。
haoming1100
2019/04/18
6730
Java Integer 类 解读
Integer 类是Java中最常用的类型,它是原生类型 int 的包装类。在开发中我们基本可以将两者等价。但是,最近在开发中遇到一个 == 与 equals 不一致的错误。所以趁此机会深入了解一下java中的Integer类。
yuxiaofei93
2018/09/11
8070
【Java】基础篇-包装类
上回说到了 字符类型 char, 作为基本类型之一, char 的底层实现对于 string 等有的关键的决定因素. 至于基本类型,难点不多,我们不在叙述了,这次我们讲 另一种类型 --- 封装类型
haoming1100
2019/04/18
5630
JDK源码解析之 java.lang.Long
toBinaryString(long i):返回long`以2为底的无符号整数形式返回参数的字符串表示形式。
栗筝i
2022/12/01
3410
Java Integer源码解读
1、引言 public class IntegerDemo { public static void main(String[] args){ Integer i=10;
程裕强
2018/01/02
8730
Java Integer源码解读
附近的人位置距离计算方法
附近的人的位置用经纬度表示,然后通过两点的经纬度计算距离。根据网上的推荐,最终采用geohash。 geohash的实现java版: 1 import java.util.BitSet; 2 import java.util.HashMap; 3 import java.util.Map; 4 5 import org.apache.commons.lang3.StringUtils; 6 7 public class Geohash { 8 9 priva
Ryan-Miao
2018/03/13
2.2K1
附近的人位置距离计算方法
jdk-8大基础类型源码阅读(byte、short、int、long、float、double、boolean、char)
在我们编写基础数据类型的时候有时候在做一些基础的判断的时候会发现,为啥判断的结果不一致,比如你int a =127 当 a==127是true,但是当a=128 a==128就发现是false,所以这时候会可能会很纳闷为啥不一样?当然jdk底层很多源码是值得每一个java从业者学习。
逍遥壮士
2022/06/15
5540
jdk-8大基础类型源码阅读(byte、short、int、long、float、double、boolean、char)
Geohash算法原理及实现
最近需要实现一个功能,查找车辆附近的加油站,如果车和加油站距离在200米以内,则查找成功。
全栈程序员站长
2022/07/19
8250
Geohash算法原理及实现
Java 实现十进制数转换为二进制
简单实现 public static String toBinary(int n) { StringBuilder sb = new StringBuilder(); for (int i = 31; i >= 0; i--) { // 将最高位的数移至最低位(移31位), 再 & 1 操作,由于1在内存中除了最低位是1,其余31位都是零,然后把这个数按十进制输出;再移次高位,做相同的操作,直到最后一位 sb.appen
一个会写诗的程序员
2020/03/25
1.2K0
JDK源码解析之 java.lang.Integer
Integer(String s)引用的静态方法,进制转换的公式:a * radix^0 + b * radix^1 + c * radix^2 + … + xx * radix^(n-1)
栗筝i
2022/12/01
1820
走进 JDK 之 Integer
开发的越久,越能体会到基础知识的重要性。抽空捋一下 JDK 源码,权当查漏补缺。读完之后,你会发现 JDK 源码真的会给你很多惊喜。
路遥TM
2021/08/31
8200
看了就知道的工厂模式---java版_源码下载
=================================================
Hongten
2018/09/13
3160
看了就知道的工厂模式---java版_源码下载
原创Java版的Shell
如果你接触过windows操作系统,你应该对windows中的cmd有一定的了解。
Hongten
2018/09/13
6190
原创Java版的Shell
相关推荐
java中的移位运算符:<<,>>,>>>总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验