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. shell脚本监测文件变化

    1. 我使用过的Linux命令之du - 查看文件的磁盘空间占用情况 用途说明 du命令是用来查看磁盘空间占用情况的,在Linux系统维护时常会用到,并且通常与df命令搭配使用.首先使用df看一下各个 ...

  2. Android scrollTo() scrollBy() Scroller解说及应用

    版本号:1.0  日期:2014.6.17  2014.6.18 版权:© 2014 kince 转载注明出处   scrollTo() .scrollBy()及 Scroller在视图滑动中常常使用 ...

  3. C# 监控Windows睡眠与恢复

    SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; private void SystemEvents_PowerModeC ...

  4. Docker Compose + Spring Boot + Nginx + Mysql

    Docker Compose + Spring Boot + Nginx + Mysql 实践 我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的 ...

  5. Caffe_Example之训练mnist

    0.参考文献 [1]caffe官网<Training LeNet on MNIST with Caffe>; [2]薛开宇<读书笔记4学习搭建自己的网络MNIST在caffe上进行训 ...

  6. Spark的数据存储(十九)

    Spark本身是基于内存计算的架构,数据的存储也主要分为内存和磁盘两个路径.Spark本身则根据存储位置.是否可序列化和副本数目这几个要素将数据存储分为多种存储级别.此外还可选择使用Tachyon来管 ...

  7. Win32 CRT and MFC 清单文件.manifest配制

    Demo.exe.manifest <?xml version="1.0" encoding="UTF-8" standalone="yes&q ...

  8. USACO 保护花朵 Protecting the Flowers, 2007 Jan

    Description 约翰留下了 N 只奶牛呆在家里,自顾自地去干活了,这是非常失策的.他还在的时候,奶牛像 往常一样悠闲地在牧场里吃草.可是当他回来的时候,他看到了一幕惨剧:他的奶牛跑进了他的花园 ...

  9. 使用jquery获取ul中当前正在点击的li的索引

    <ul class="list"> <li>哈哈</li> <li>呵呵</li> <li>嘻嘻</l ...

  10. Five Invaluable Techniques to Improve Regex Performance

    Regular expressions are powerful, but with great power comes great responsibility. Because of the wa ...