“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