IntegerToBinaryString
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的更多相关文章
- Java中处理二进制移位
我相信,这篇文章读起来会相当有趣. 文章中编程语言是Java,用Java的原因:第一,Java不做数据溢出校验,这样我们可以忽略溢出异常:第二,Java普及率比较高,就像是python或shell,几 ...
随机推荐
- CF802G Fake News (easy)
CF802G Fake News (easy) 题意翻译 给定一个字符串询问能否听过删除一些字母使其变为“heidi” 如果可以输出“YES”,不然为“NO” 题目描述 As it's the fir ...
- Spring+MyBatis双数据库配置
Spring+MyBatis双数据库配置 近期项目中遇到要调用其它数据库的情况.本来仅仅使用一个MySQL数据库.但随着项目内容越来越多,逻辑越来越复杂. 原来一个数据库已经不够用了,须要分库分表.所 ...
- Android-自己定义标题栏
Android-自己定义标题栏 2014年4月25日 分享知识点 最近也比較多事情,想发发博客就是心有余而力不足,本篇博文主要教大家怎样实现自己定义标题栏,非常easy.那么聪明的你一下就看懂. 有兴 ...
- 自己定义控件三部曲之动画篇(十三)——实现ListView Item进入动画
前言:宝剑锋从磨砺出,梅花香自苦寒来 相关文章: <Android自己定义控件三部曲文章索引>: http://blog.csdn.net/harvic880925/article/det ...
- java 递归实现删除或查询指定目录下的全部文件
/** * 递归列举盘符下的全部文件的名称,如E:\HeartIsland * * @author HeartIsland * */ public class FileListDemo { /** * ...
- Unable to access the IIS metabase
https://stackoverflow.com/questions/12859891/error-unable-to-access-the-iis-metabase 解决方法1 On Window ...
- 原生js实现复选框
简单排版 <style> .box { display: flex; align-items: center; } #allSelect, p { width: 20px; height: ...
- POJ 1466 最大独立点集
思路:匈牙利 n-ans/2; // by SiriusRen #include <cstdio> #include <cstring> #define N 505 using ...
- 编写高质量的Makefile
源地址 :http://blog.csdn.net/maopig/article/details/6801749 一.前言 回想自己的第一个Makefile,是这个样子的 CODE hello:hel ...
- c# CacheHelper缓存帮助类
一.开篇 主要功能:改善程序性能.服务器的响应速度,尤其是当数据的处理过程变得复杂以及访问量变大时,变得比较明显.有些数据并非时刻在发生变化,如果我们可以将一些变化不频繁的数据的最终计算结果(包括页面 ...