“Java中的整型”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (建立内容为“=== 怎样输出整型的二进制形式 === <syntaxhighlight lang="java"> public class Test { public static void main(String[] args) { System.out.p…”的新页面) |
Jihongchang(讨论 | 贡献) 小 (Jihongchang移动页面Java中整型的二进制和十进制至Java中的整型) |
||
(未显示同一用户的3个中间版本) | |||
第15行: | 第15行: | ||
binary string of 7: 111 | binary string of 7: 111 | ||
binary string of -7: 11111111111111111111111111111001 | binary string of -7: 11111111111111111111111111111001 | ||
+ | </syntaxhighlight>如果想要正数显示全 ,可以:<syntaxhighlight lang="java"> | ||
+ | public class Test { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | System.out.printf("binary string of %d: %s\n", 7, String.format("%32s", Integer.toBinaryString(7)).replace(' ', '0')); | ||
+ | |||
+ | System.out.printf("binary string of %d: %s\n", -7, Integer.toBinaryString(-7)); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | binary string of 7: 00000000000000000000000000000111 | ||
+ | binary string of -7: 11111111111111111111111111111001 | ||
+ | </syntaxhighlight>int 4个字节(byte),32位(bit),1个符号位(0-正,1-负), | ||
+ | |||
+ | ==== 正数 ==== | ||
+ | 就是十进制转二进制,其余位(bit)为0; | ||
+ | {| class="wikitable" | ||
+ | !1 | ||
+ | 符号位 | ||
+ | !2 | ||
+ | !3 | ||
+ | !4 | ||
+ | !5 | ||
+ | !6 | ||
+ | !7 | ||
+ | !8 | ||
+ | !9 | ||
+ | !10 | ||
+ | !11 | ||
+ | !12 | ||
+ | !13 | ||
+ | !14 | ||
+ | !15 | ||
+ | !16 | ||
+ | !17 | ||
+ | !18 | ||
+ | !19 | ||
+ | !20 | ||
+ | !21 | ||
+ | !22 | ||
+ | !23 | ||
+ | !24 | ||
+ | !25 | ||
+ | !26 | ||
+ | !27 | ||
+ | !28 | ||
+ | !29 | ||
+ | !30 | ||
+ | 2<sup>2</sup> | ||
+ | !31 | ||
+ | 2<sup>1</sup> | ||
+ | !32 | ||
+ | 2<sup>0</sup> | ||
+ | |- | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |} | ||
+ | 2<sup>2</sup>+2<sup>1</sup>+2<sup>0</sup>=4+2+1=7 | ||
+ | |||
+ | ==== 负数 ==== | ||
+ | 则是补码存储: | ||
+ | |||
+ | ①十进制转为二进制得到: | ||
+ | {| class="wikitable" | ||
+ | !1 | ||
+ | 符号位 | ||
+ | !2 | ||
+ | !3 | ||
+ | !4 | ||
+ | !5 | ||
+ | !6 | ||
+ | !7 | ||
+ | !8 | ||
+ | !9 | ||
+ | !10 | ||
+ | !11 | ||
+ | !12 | ||
+ | !13 | ||
+ | !14 | ||
+ | !15 | ||
+ | !16 | ||
+ | !17 | ||
+ | !18 | ||
+ | !19 | ||
+ | !20 | ||
+ | !21 | ||
+ | !22 | ||
+ | !23 | ||
+ | !24 | ||
+ | !25 | ||
+ | !26 | ||
+ | !27 | ||
+ | !28 | ||
+ | !29 | ||
+ | !30 | ||
+ | 2<sup>2</sup> | ||
+ | !31 | ||
+ | 2<sup>1</sup> | ||
+ | !32 | ||
+ | 2<sup>0</sup> | ||
+ | |- | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |} | ||
+ | ②然后取反码,再得到: | ||
+ | {| class="wikitable" | ||
+ | !1 | ||
+ | 符号位 | ||
+ | !2 | ||
+ | !3 | ||
+ | !4 | ||
+ | !5 | ||
+ | !6 | ||
+ | !7 | ||
+ | !8 | ||
+ | !9 | ||
+ | !10 | ||
+ | !11 | ||
+ | !12 | ||
+ | !13 | ||
+ | !14 | ||
+ | !15 | ||
+ | !16 | ||
+ | !17 | ||
+ | !18 | ||
+ | !19 | ||
+ | !20 | ||
+ | !21 | ||
+ | !22 | ||
+ | !23 | ||
+ | !24 | ||
+ | !25 | ||
+ | !26 | ||
+ | !27 | ||
+ | !28 | ||
+ | !29 | ||
+ | !30 | ||
+ | 2<sup>2</sup> | ||
+ | !31 | ||
+ | 2<sup>1</sup> | ||
+ | !32 | ||
+ | 2<sup>0</sup> | ||
+ | |- | ||
+ | |0 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |0 | ||
+ | |0 | ||
+ | |0 | ||
+ | |} | ||
+ | ③反码再+1,得到补码: | ||
+ | {| class="wikitable" | ||
+ | !1 | ||
+ | 符号位 | ||
+ | !2 | ||
+ | !3 | ||
+ | !4 | ||
+ | !5 | ||
+ | !6 | ||
+ | !7 | ||
+ | !8 | ||
+ | !9 | ||
+ | !10 | ||
+ | !11 | ||
+ | !12 | ||
+ | !13 | ||
+ | !14 | ||
+ | !15 | ||
+ | !16 | ||
+ | !17 | ||
+ | !18 | ||
+ | !19 | ||
+ | !20 | ||
+ | !21 | ||
+ | !22 | ||
+ | !23 | ||
+ | !24 | ||
+ | !25 | ||
+ | !26 | ||
+ | !27 | ||
+ | !28 | ||
+ | !29 | ||
+ | !30 | ||
+ | 2<sup>2</sup> | ||
+ | !31 | ||
+ | 2<sup>1</sup> | ||
+ | !32 | ||
+ | 2<sup>0</sup> | ||
+ | |- | ||
+ | |0 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |0 | ||
+ | |0 | ||
+ | |1 | ||
+ | |} | ||
+ | ④最后,首位(bit)是符号,值为二进制的1,表示负数: | ||
+ | {| class="wikitable" | ||
+ | !1 | ||
+ | 符号位 | ||
+ | !2 | ||
+ | !3 | ||
+ | !4 | ||
+ | !5 | ||
+ | !6 | ||
+ | !7 | ||
+ | !8 | ||
+ | !9 | ||
+ | !10 | ||
+ | !11 | ||
+ | !12 | ||
+ | !13 | ||
+ | !14 | ||
+ | !15 | ||
+ | !16 | ||
+ | !17 | ||
+ | !18 | ||
+ | !19 | ||
+ | !20 | ||
+ | !21 | ||
+ | !22 | ||
+ | !23 | ||
+ | !24 | ||
+ | !25 | ||
+ | !26 | ||
+ | !27 | ||
+ | !28 | ||
+ | !29 | ||
+ | !30 | ||
+ | 2<sup>2</sup> | ||
+ | !31 | ||
+ | 2<sup>1</sup> | ||
+ | !32 | ||
+ | 2<sup>0</sup> | ||
+ | |- | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |0 | ||
+ | |0 | ||
+ | |1 | ||
+ | |} | ||
+ | |||
+ | |||
+ | === 怎么验证呢? === | ||
+ | java8中已经加入了在声明整型变量时对二进制形式字面量声明的支持:<syntaxhighlight lang="java"> | ||
+ | public class Test1 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | int a = 0b00000000000000000000000000000111; | ||
+ | int b = 0b11111111111111111111111111111001; | ||
+ | System.out.printf("a=%d\n", a); | ||
+ | System.out.printf("b=%d\n", b); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | a=7 | ||
+ | b=-7 | ||
</syntaxhighlight> | </syntaxhighlight> |
2022年11月11日 (五) 17:48的最新版本
怎样输出整型的二进制形式
public class Test {
public static void main(String[] args) {
System.out.printf("binary string of %d: %s\n", 7, Integer.toBinaryString(7));
System.out.printf("binary string of %d: %s\n", -7, Integer.toBinaryString(-7));
}
}
binary string of 7: 111
binary string of -7: 11111111111111111111111111111001
如果想要正数显示全 ,可以:
public class Test {
public static void main(String[] args) {
System.out.printf("binary string of %d: %s\n", 7, String.format("%32s", Integer.toBinaryString(7)).replace(' ', '0'));
System.out.printf("binary string of %d: %s\n", -7, Integer.toBinaryString(-7));
}
}
binary string of 7: 00000000000000000000000000000111
binary string of -7: 11111111111111111111111111111001
int 4个字节(byte),32位(bit),1个符号位(0-正,1-负),
正数
就是十进制转二进制,其余位(bit)为0;
1
符号位 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30
22 |
31
21 |
32
20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
22+21+20=4+2+1=7
负数
则是补码存储:
①十进制转为二进制得到:
1
符号位 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30
22 |
31
21 |
32
20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
②然后取反码,再得到:
1
符号位 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30
22 |
31
21 |
32
20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
③反码再+1,得到补码:
1
符号位 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30
22 |
31
21 |
32
20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
④最后,首位(bit)是符号,值为二进制的1,表示负数:
1
符号位 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30
22 |
31
21 |
32
20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
怎么验证呢?
java8中已经加入了在声明整型变量时对二进制形式字面量声明的支持:
public class Test1 {
public static void main(String[] args) {
int a = 0b00000000000000000000000000000111;
int b = 0b11111111111111111111111111111001;
System.out.printf("a=%d\n", a);
System.out.printf("b=%d\n", b);
}
}
a=7
b=-7