java二进制
好久没有使用过二进制进行数据传输,基本的知识已经忘了,先来回顾一下数学知识(参考:https://www.cnblogs.com/wkcn/p/7803147.html):
- 进制的表现形式
二进制: 由0和1两个数字组成。
八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
十进制: 都是以0-9这九个数字组成,不能以0开头。
十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x或0X开始。 - 进制之间的转换
2.1 十进制转二进制:除以2,反向取余数,直到商为0。(Integer.toBinaryString(9))
2.2 二进制转十进制:二进制的每一个数乘以2的n次方,n表示当前数所在的位置从0开始,每次递增1。然后得出来的每个数相加。
2.3 十进制转8进制:除以8,反向取余数,直到商为0。
2.4 八进制转十进制:每一个数乘以8的n次方,n表示当前数所在的位置从0开始,每次递增1。然后得出来的每个数相加。
2.5 十进制转十六进制:除以16,反向取余数,直到商为0。十六进制的特点:由0~9 a(10) b(11) c(12) d(13) e(14) f(15) 表示。
十六进制转十进制:每一个数乘以16的n次方,n表示当前数所在的位置从0开始,每次递增1。然后得出来的每个数相加。
2.6 计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码, 补码=反码+1。在 二进制里,是用 0 和 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。
以负数-5为例:
>1.先将-5的绝对值转换成二进制,即为0000 0101;
>2.然后求该二进制的反码,即为 1111 1010;
>3.最后将反码加1,即为:1111 1011
由于在计算机中 只有一个字节才能存放ASCII编码,而 八位(8bit)是一个字节,所以此处-5绝对值的二进制本来是101,为了使其在计算机中有意义给它补5个0,即0000 0101;
在java中表示形式为
二进制 :二进制数前加:0b 例如:0b111 对应十进制的:7
八进制 :八进制数是以0开头的, 例如:031 对应十进制的:25
十六进制:十六进制数前加:0x 例如:0x1B 对应十进制的:27