将 int 转换为带有额外内容的 32 位二进制行
Converting an int into a 32-bit binary line with extra stuff
用户输入一个 8 个字符的字符串,然后将其转换为字符串并放入数组中进行播放。
有了这 8 位数字,我希望能够将它们转换成 32 位二进制
例如
- 0000 0000 0000 0000 0000 0000 0000 0000
整数 = 12,345,678
- 0000 0000 1011 1100 0110 0001 0100 1110
整数 = -10,000,000
1111 1111 0110 0111 0110 1001 1000 0000
System.out.print("Please enter an 8 digit number");
System.out.println();
Scanner user_input = new Scanner( System.in );
StudentID = user_input.nextLine();
sID = Integer.parseInt(StudentID);
String ss[] = StudentID.split("");
StudentID = Integer.toBinaryString(sID);
while(loop >= 0){
d[loop] = Integer.parseInt(ss[loop]) ;
loop--;
}
我试过用
"StudentID = Integer.toBinaryString(sID);"
然而,它不会产生加法 0 来组成 32 位(可能更有效)。像这样
- 101111000110000101001110
我如何才能让所有整数显示在 32 位字符串中,以及接受负数(我可以使用两个补码的取反)?
很棒的参考;
http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html
对于整数,你可以使用这个技巧:
String result = Long.toBinaryString( sID & 0xffffffffL | 0x100000000L ).substring(1);
这将整数放入long
,在其左侧添加一位,这意味着toBinaryString
将有33位数字,然后取右侧的32位数字(删除添加的额外 1)。
一个Java8个版本:
String result = Long.toBinaryString( Integer.toUnsignedLong(sID) | 0x100000000L ).substring(1);
用户输入一个 8 个字符的字符串,然后将其转换为字符串并放入数组中进行播放。
有了这 8 位数字,我希望能够将它们转换成 32 位二进制 例如
- 0000 0000 0000 0000 0000 0000 0000 0000
整数 = 12,345,678
- 0000 0000 1011 1100 0110 0001 0100 1110
整数 = -10,000,000
1111 1111 0110 0111 0110 1001 1000 0000
System.out.print("Please enter an 8 digit number"); System.out.println(); Scanner user_input = new Scanner( System.in ); StudentID = user_input.nextLine(); sID = Integer.parseInt(StudentID); String ss[] = StudentID.split(""); StudentID = Integer.toBinaryString(sID); while(loop >= 0){ d[loop] = Integer.parseInt(ss[loop]) ; loop--; }
我试过用 "StudentID = Integer.toBinaryString(sID);" 然而,它不会产生加法 0 来组成 32 位(可能更有效)。像这样
- 101111000110000101001110
我如何才能让所有整数显示在 32 位字符串中,以及接受负数(我可以使用两个补码的取反)?
很棒的参考; http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html
对于整数,你可以使用这个技巧:
String result = Long.toBinaryString( sID & 0xffffffffL | 0x100000000L ).substring(1);
这将整数放入long
,在其左侧添加一位,这意味着toBinaryString
将有33位数字,然后取右侧的32位数字(删除添加的额外 1)。
一个Java8个版本:
String result = Long.toBinaryString( Integer.toUnsignedLong(sID) | 0x100000000L ).substring(1);