二进制
作者:互联网
进制
293147
2 * 10 # 5 +
9 * 10 # 4 +
3 * 10 # 3 +
1 * 10 # 2 +
4 * 10 # 1+
7 * 10 # 0
权值 :
用10的n次方 这样的数称为10进制数
10 进制 没有10, 逢10进1 => 9 + 1 => 10
十六进制(hex)
权值 : 以16为底的n次方
16进制没有16, 逢16进1
八进制
权值 : 以8为底的n次方
8进制没有8, 逢8进1
二进制(binary)
权值 : 以2为底的n次方
2进制没有2, 逢2进1.
0x123 =>
1 * 16 # 2 + //权值
2 * 16 # 1 +
3 * 16 # 0 = 291
0110 1001 =>
0 * 2 # 7 : 128
1 * 2 # 6 : 64
1 * 2 # 5 : 32
0 * 2 # 4 : 16
1 * 2 # 3 : 8
0 * 2 # 2 : 4
0 * 2 # 1 : 2
1 * 2 # 0 = 105
0x69 =>
6 * 16 + 9 = 105
十进制数105和16进制数0x69及2进制的0110 1001, 这3个数是什么关系 ?
是一回事,同一个数
练习 :
0x6211
6 * 16 # 3
2 * 16 # 2 + 529
1 * 16 # 1 +
1 * 16 # 0 =
529 + 24,576 => 25105
0011 1101
32 + 16 + 8 + 4 + 1 => 61
二进制和十六进制的相互转换
十进制 二进制 十六进制
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
结论 : 一个16进制数正好可以对应4个bit的二制数, 两个16进制数就可以更方便表示8个bit, 正好一个字节
0x93 =>
1001 0011
0xE72C
1110 0111 0010 1100
0101 0110 1010 1110 =>
0x56AE
9 :
8421
0000
1001
0x9C5AD7B2 => 4字节
1001 1100 0101 1010 1101 0111 1011 0010
0101 1101 0101 0011 0110 0101 1001 0100 =>
0x5D536594
二进制
原码 反码 补码
原码:将⼀个整数,转换成⼆进制,就是其原码。如单字节的5的原码为:0000 0101;-5的原码为1000 0101。
反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每⼀位取反。如单字节的5的反码为:0000 0101;-5的反码为1111 1010。
补码:正数的补码就是其原码;负数的反码+1就是补码。如单字节的5的补码为:0000 0101;-5的补码为1111 1011。
计算机底层的所用数据都是二进制
表示数据的正负使用符号位, 符号位永远位于2进制中的最左边, 最高位
如果符号位为0, 说明这个数是正数
如果符号位为1, 说明这个数是负数
计算中的所有数据都必须是以补码形式保存
正数的补码就是自身
负数的补码是由它相反数全部按位取反再加1得到
比如 -8的补码, 8的原码全部取反+1得到
0000 1000 => 1111 0111 => 1111 1000 这就是负8的补码.
0000 0000 正0
1000 0000 负0
补码的出现解决负0的问题, 还有解决计算机(早期)中没有减法的问题
0011 1011 => 是一个正数 => 0x3B => 59
1101 0011 => 是一个负数, 负几?? 先找它的相反数
-1 => 1101 0010
取反 => 0010 1101 => 0x2D => 45
所以1101 0011是 -45
查看下面的2个数是多少.
0101 1100 : 0x5C => 92
1100 0010 : 是负数, 负几?
-1 => 1100 0001
取反 => 0011 1110 => 0x3E => 62
所以 1100 0010是-62
最大值最小值
byte型
最大值
0111 1111 => 0x7F = > 7*16+15 => 127
1111 1111 => 是负数, 负几?
二进制变十进制:减1 取反 换算 加负号
-1 => 1111 1110
取反=> 0000 0001 => 1
所以1111 1111 是-1
最小值
1000 0000
-1 => 0111 1111
取反 => 1000 0000 => 0x80 => 128
所以1000 0000 是 -128
它是byte型 最小值
short型
最大值
0111 1111 1111 1111=> 0x7FFF
最小值
1000 0000 0000 0000 => 0x8000
int型
最大值
0111 1111 1111 1111 1111 1111 1111 1111=> 0x7FFFFFFF
最小值
1000 0000 0000 0000 0000 0000 0000 0000 => 0x80000000
char 型
最大值
1111 1111 1111 1111 => 0xFFFF
最小值
0000 0000 0000 0000 => 0x0000
标签:10,0000,16,二进制,0101,补码,1111 来源: https://www.cnblogs.com/0313yewu/p/16150716.html