IntegerToBinaryString

方法写的非常的巧妙;佩服佩服!

package com.stono.jdk;

public class IntegerToBinaryString {
public static void main(String[] args) { integerToBinaryString(); // jdk中的方法,调用toUnsignedString方法
step1(); // 1<< shift
string(); // string构造函数
integerToHexString(); // jdk中的方法,调用toUnsignedString方法
integerToUnsignedString(); // jdk中的方法,Integer中的,但是是私有的,最多还可以计算一下32进制的数字;
} private static void integerToUnsignedString() {
int i = 2100000000; // 输入:需要转换的数字
i = 31;
i = 63;
int shift = 5; // 输入:移位数量, 如果是5,那么就是32进制了;
// shift = 6; // 如果是6,那么就是64进制了; digits没有这么多位数;
System.out.println("digits.length: "+digits.length); // 最多也就是36位了; char[] buf = new char[32]; // 最多是32位,如果计算16进制就用不了那么多位数了;
int charPos = 32;
int radix = 1 << shift;
int mask = radix - 1;
System.out.println("mask:" + Integer.toBinaryString(mask));
do {
buf[--charPos] = digits[i & mask]; // 从数组的最后一位开始赋值,这样就可以形成正常的字符串
i >>>= shift; // 无符号右移
} while (i != 0); String stringReturn = new String(buf, charPos, (32 - charPos)); // string的一种构造方法
System.out.println("charPos: "+charPos);
System.out.println(buf);
System.out.println(stringReturn);
} private static void integerToHexString() {
int i = 2100000000; // 输入:需要转换的数字
i = 11;
int shift = 4; // 输入:移位数量,Hex是十六进制,这样就可以四个四个的计算 char[] buf = new char[32]; // 最多是32位,如果计算16进制就用不了那么多位数了;
int charPos = 32;
int radix = 1 << shift;
int mask = radix - 1;
System.out.println("mask:" + Integer.toBinaryString(mask));
do {
buf[--charPos] = digits[i & mask]; // 从数组的最后一位开始赋值,这样就可以形成正常的字符串
i >>>= shift; // 无符号右移
} while (i != 0); String stringReturn = new String(buf, charPos, (32 - charPos)); // string的一种构造方法
System.out.println("charPos: "+charPos);
System.out.println(buf);
System.out.println(stringReturn);
} private static void string() {
String string = new String(digits,0,3); // string构造函数,从0开始,3个元素
System.out.println(string);
/** The value is used for character storage. */
// private final char value[];
// 字符串中就是使用char数组来存储字符串内容的;
// 这种构造函数用到了Arrays.copyOfRange,里面用到了System.arraycopy,这是个native方法
} private static void step1() {
int shift = 1;
int radix = 1<<shift; // 把1左移一位
System.out.println(radix);
int mask = radix - 1; // 再减去1,
System.out.println(mask);
shift = 2;
radix = 1<<shift; // 如果shift是2,左移两位
System.out.println(radix);
mask = radix - 1; // 再减去1,
System.out.println(mask);
// 这样把shift位数的都填上1;
} // jdk中的方法
private static void integerToBinaryString() {
int i = 2100000000; // 输入:需要转换的数字
i = 1;
int shift = 1; // 输入:移位数量 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); String stringReturn = new String(buf, charPos, (32 - charPos)); // string的一种构造方法
System.out.println("charPos: "+charPos);
System.out.println(buf);
System.out.println(stringReturn);
System.out.println(Integer.toBinaryString(-1)); }
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'
};
}

IntegerToBinaryString的更多相关文章

  1. Java中处理二进制移位

    我相信,这篇文章读起来会相当有趣. 文章中编程语言是Java,用Java的原因:第一,Java不做数据溢出校验,这样我们可以忽略溢出异常:第二,Java普及率比较高,就像是python或shell,几 ...

随机推荐

  1. HDU 4350

    最近这些天,确实很烦恼.因为发现自己好像无论怎么样努力,也赶不上那些强校的学生.不得不承认,我们是传统弱校了.停了有一周了,什么也不想写,不停的反思,到底自己在哪里比不上人.D说,那是因为自始至终你只 ...

  2. [Tailwind] Style Elements on hover and focus with Tailwind’s State Variants

    In this lesson, we learn how to target specific states of elements and apply styles only when those ...

  3. spring Batch实现数据库大数据量读写

    spring Batch实现数据库大数据量读写 博客分类: spring springBatchquartz定时调度批处理  1. data-source-context.xml <?xml v ...

  4. 在 Eclipse 中使用 C++

    安装 安装Eclipse Eclipse下载页 能够选择Eclipse IDE for C/C++ Developers(内置CDT插件) 也能够选择安装其它版本号之后再安装CDT插件. 安装CDT插 ...

  5. Fragment状态保存

    这篇博文是对官方API Demo的FragmentRetainInstanceSupport.java的学习.路径在android-sdk-macosx/extras/android/support/ ...

  6. [AHOI 2009] 同类分布

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1799 [算法] 数位DP [代码] #include<bits/stdc++. ...

  7. 杂项-DB:ETL(数据库仓库技术)

    ylbtech-杂项-DB:ETL(数据库仓库技术) ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).交互转换(transfor ...

  8. 6.vi使用

  9. ROS-单目摄像头标定

    前言:由于摄像图内部与外部的原因,生成的图像往往会发生畸变,为了避免数据源造成的误差,需要针对摄像头的参数进行标定. ros官方提供了camera_calibration软件包进行摄像头标定. 一.安 ...

  10. roscore不能启动

    通过VNC 在VNC窗口上出入 roscore  得到下面错误信息 ----------------------------------------------------------- proces ...