背景
项目中需要将十进制转为二进制,然后对转化后 的二进制进行特别处理;比如,转为8位后
10001010 ,如果第0位是“1”就触发动作,是"0"就不触发
方法
package com.lm.demo.lambda;
import org.junit.Test;
/**
* @author Administrator
*/
public class LongTest {
@Test
public void forTest(){
System.out.println(Long.toBinaryString(123));
//负数64位
System.out.println(Long.toBinaryString(-123));
System.out.println();
System.out.println(Integer.toBinaryString(123));
//负数32位
System.out.println(Integer.toBinaryString(-123));
}
}
效果
注意
如果是正数,要转化为 8 16 32位,就要补0 ,建议用Long.toBinaryString,因为支持64位。
负数的话,比如要转成8位有符号,如上"-123"就截取最后 8位,结果是: 10001011
正数的话,比如要转成8位有符号,如上"123"就需要在左边补0,结果是: 01111011
左边补0方法
java 给字符串左补0或右补0_千百元的博客-CSDN博客
负数转二进制
123--> 1111011 -->补0到8位 --> 01111011
01111011
取反-->
10000100
+1--->遇1进一位
10001011