说明:二进制是由1和0构成的一个32位的数字,逢二进一
二进制:0和1
00000000 00000000 00000000 00000000
例如:10进制的5对应的二进制为:
00000000 00000000 00000000 00000101
所谓的进制就是进位制:是人们规定的一种进位方式,对于任何一种进制,表示某一位置上的数运算时 缝几进1
- 十进制:逢十进一
- 八进制:缝八进一
- 二进制:逢二进一
- 十六进制:缝十六进一
二进制:是由数字0和1组成
八进制:由0,1,2,3,4,5,6,7组成
十进制:由0,1,2,3,4,5,6,7,8,9组成
十六进制:由0-9以及a,b,c,d,e,f组成
二进制数在系统中,位叫做bit,也称位比特,每个二进制数0或1就是一个位(bit)
位是数据存储的最小单位,其中8bit也称位一个字节(byte)
- 1b(byte)=8bit
- 1kb=1024b=2^20b
- 1mb=1024kb=2^20b
- 1gb=1024mb=2^30b
- 1tb=1024gb=2^40b
- 1pb=1024tb=2^50b
十进制和二进制的转换
十进制转二进制
对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次的商的整数部分作为被除数并依次记下每次的余数,另外,所得的商最后一位余数是所求二进制的最高位
口诀:先写商在写余,无余数则写零
得出的结果反向写出来
10的二进制:1010
二进制转十进制
进制数第0位(最后一个)的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方.第n位则是2的n次方,最后结果求和
比如:111011转十进制
从后往前数
第0位 1 1*2^0=1
第1位 1 1*2^1=2
第2位 0 0*2^2=0
第3位 1 1*2^3=8
第4位 1 1*2^4=16
第5位 1 1*2^5=32
结果最后求和:1+2+0+8+16+32=59
所以二进制111011的十进制为59
总结出来的公式为:n*2^n的结果求和
原码、反码、补码
说明:在计算机中CPU操作的都是补码,原因是因为整数分负数和正数
二进制的最高位:0是正数(正数符号位(最高位)为0),1是负数(负数符号位(最高位)为1)
正数的原码、补码、反码都是一样
负数的反码:按位取反,符号位不变
负数的补码:在反码的基础上加1
按位运算的二进制表现形式
按位与 :& 都为1的结果设为1
$a & $b
10 & 20
10的补码:00000000 00000000 00000000 00001010
20的补码:00000000 00000000 00000000 00010100
结果为: 00000000 00000000 00000000 00000000
转为十进制位:0
按位或:| 其中一个为1结果就为1
$a=10 $b=20
$a | $b
10的补码:00000000 00000000 00000000 00001010
20的补码:00000000 00000000 00000000 00010100
结果为: 00000000 00000000 00000000 00011110
转换为十进制:16+8+4+2+0=30
负数:
$a=-10 $b=-20
$a | $b
-10的原码:10000000 00000000 00000000 00001010
-10的反码:11111111 11111111 11111111 11110101
-10的补码:11111111 11111111 11111111 11110110
-20的原码:10000000 00000000 00000000 00010100
-20的反码:11111111 11111111 11111111 11101011
-20的补码:11111111 11111111 11111111 11101100
-10的补码:11111111 11111111 11111111 11110110
-20的补码:11111111 11111111 11111111 11101100
结果补码: 11111111 11111111 11111111 11111110
结果反码: 11111111 11111111 11111111 11111101
结果原码: 10000000 00000000 00000000 00000010
转换为十进制:-2
按位非:~ 按位取反
$a=-3
~$a
-3的原码:10000000 00000000 00000000 00000011
-3的反码:11111111 11111111 11111111 11111100
-3的补码:11111111 11111111 11111111 11111101
按位非 :10000000 00000000 00000000 00000010(按位非负数符号位不变,其他取反,得到的是按位非的补码)
按位非反码:11111111 11111111 11111111 11111101
按位非原码:00000000 00000000 00000000 00000010
转为十进制:2
负数补码速算法,由最低位(右)向高位(左)查找到第一个1与符号位之间的所有数字按位取反的逆运算
10010110是补码,符号位与最后一个1之间的所有数字按位取反,得11101010
评论前必须登录!
注册