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,几 ...
随机推荐
- [SharePoint2010开发入门经典]SPS2010开发工具
本章概要: 1.了解不同的开发SPS的方法 2.了解SPS开发工具和环境 3.使用VS2010和SPD还有Blend开发SPS
- ym——物联网入口之中的一个Android蓝牙4.0
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 假设还有同学不知道蓝牙4.0能够做什么请查看Android+蓝牙 4.0 将带来什么? ...
- Ruby学习(三)——类与对象(1)
今天看了<Ruby元编程>,感觉内容新颖翔实,是Ruby中难得的一见的好书,在此推荐给大家.其实今天看的主要是第一章的第一部分,先把内容梳理一下,也许这一部分会分成几天的内容来给大家介绍吧 ...
- Word技巧杂记(一)——去掉页眉上方的黑线
今天在调整文章的格式时,突然发现在页眉的上方有一条巨粗无比的黑线,不知从何处冒出来的(如下图) 经过长时间的研究,终于发现原来这是页面的边框.解决办法也很简单: 格式->边框与底纹->页面 ...
- numpy的scale就是 x-mean/std
>>> from sklearn import preprocessing >>> import numpy as np >>> a=np.arr ...
- Java-MyBatis:MyBatis XML 文件
ylbtech-Java-MyBatis:MyBatis XML 文件 1.返回顶部 1. Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大, ...
- Vue读书笔记:关于$ref、props和$emit
1.props实现父组件向子组件传递数据 子组件可以通过props接收到来自父组件的数据,并且是单向绑定的.也就是说,数据不能从子组件反向传递. 2.$ref实现子组件向父组件通信 来自官方非常难理解 ...
- Oracle数据库基础(一)
当今主流数据库有瑞典MySQL公司的MySQL数据库,微软的SqlServer数据库,IBM公司的DB2,Oracle公司的Oracle数据库以及美国Sybase的Sybaseshujuku .数据库 ...
- 移动web中的流式布局和viewport知识介绍
1 流式布局 其实 流式布局 就是百分比布局,通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充. 这样的布局方式 就是移动web开发使用的常用布局方式 ...
- Photoshop把图片调成固定的像素。
1.用PhotoShop打开需要修改的图片. 2.点击“窗口”菜单的“图层”子菜单,打开图层控制面板(快捷键F7).3.用鼠标左键双击“图层”面板的“背景”图层.在弹出窗口中点击“确定”按钮,解锁背景 ...