public class TestBinarysystem {
/**
* 二进制基础:
* 计算机中一切数据都是二进制的,基本类型(对象,音频,视频)
* 十进制是人类习惯,计算按照人类习惯利用算法输入输出
* "10"->算法转化->1010(2)->算法->"10"
* 16进制是二进制的简写,十六进制就是二进制!为了解决符号问题(计算机硬件不支持正负号,使用补码算法!)
* 十六进制
* 逢十六进一,基数:16
* 数字:0123456789abcdef
* 权:256 16 1
* 权:比如十进制的1511。由于十进制的维权是10,所以这个数=1*1000(10的三次方)+5*100(10的二次方)+1*10(10的一次方)+1*0(10的零次方)
* 十进制 十六进制 二进制
* 0 0 0000 0000
* 1 01 0000 0001
* 2 02 0000 0010
* 3 03 0000 0011
* 4 04 0000 0100
* 5 05 0000 0101
* 6 06 0000 0110
* 7 07 0000 0111
* 8 08 0000 1000
* 9 09 0000 1001
* 10 0a 0000 1010
* 11 0b 0000 1011
* 12 0c 0000 1100
* 13 0d 0000 1101
* 14 0e 0000 1110
* 15 0f 0000 1111
* 16 10 0001 0000
* 17 11 0001 0001
* 18 12 0001 0010
*
* 41(16)=4*16+1*1=65(10);
*
*二进制与十六进制的转换:4位,4位对应转换;
*101001000011000(2)->0101 0010 0001 1000
* ->5218(16)
*char c = 0x5218;//16,2进制
*补码:
* 二进制转换表:
* 十进制 二进制
* 15 1111 -1
* 14 1110 -2
* 13 1101 -3
* 12 1100 -4
* 11 1011 -5
* 10 1010 -6
* 9 1001 -7
* 8 1000 -8
* 0 0000
* 1 0001
* 2 0010
* 3 0011
* 4 0100
* 5 0101
* 6 0110
* 7 0111
* ~4+1 = -4; ~:取反 4 0100 ~ 1011
*
* byte类型 8位补码
* min:1000 0000
* max:0111 1111
* -1:1111 1111
* short类型 16位补码
* min:1000 0000 0000 0000
* max:0111 1111 1111 1111
* -1:1111 1111 1111 1111
* int类型 32位补码
* min:1000 0000 0000 0000 0000 0000 0000 0000
* 十六进制:0x80000000
* max:0111 1111 1111 1111 1111 1111 1111 1111
* 十六进制:0x7fffffff
* -1:1111 1111 1111 1111 1111 1111 1111 1111
* 十六进制:0xffffffff
* long类型 64位补码
* min:0x80000000 00000000
* max:0x7fffffff ffffffff
* -1:0xffffffff ffffffff
*
* 移位运算符:
* 1、
* <<
* 1101001->高位去掉,低位补0->10100110
* 2、
* >>
* 011010011->高位补0,低位去掉->11101001
* 3、
* >>>
* 011010011->高位补0,低位去掉->001101001
* @param args
*/
public static void main(String[] args) {
char f = 0x5218;//16,2进制
System.out.println(f);
int i = -1;//0xfffffff 补码
int max = 0x7fffffff;
int min = 0x80000000;
long maxL = 0x7fffffffffffffffL;
System.out.println(Integer.toBinaryString(i));
System.out.println(Integer.toHexString(i));
System.out.println(Integer.toBinaryString(min));
System.out.println(Integer.toHexString(min));
System.out.println(Integer.toBinaryString(max));
System.out.println(Integer.toHexString(max));
System.out.println(Long.toBinaryString(maxL));
System.out.println(Long.toHexString(maxL));
//二进制运算
int x = 0xfffffffe;//-2
//11111111 11111111 11111111 11111110
int b = x<<1;//数字左移*2
//11111111 11111111 11111111 11111100
int c = x>>1;
//11111111 11111111 11111111 11111111
int d = x>>>1;
//01111111 11111111 11111111 11111111
System.out.println(Integer.toBinaryString(x));
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(c));
System.out.println(Integer.toBinaryString(d));
System.out.println(Integer.toHexString(x));
System.out.println(Integer.toHexString(b));
System.out.println(Integer.toHexString(c));
System.out.println(Integer.toHexString(d));
}
}
二进制
最新推荐文章于 2021-12-03 23:12:13 发布