1.概念
进制:进位计数制
为什么用二进制
- 效率高
- 硬件实现简单
- 发展快,新计数发展不排除重新发展三进制。
2.进制转换
进制的基与权
基:基数,进制的位数,数码的个数
权:位权,每一位的固定权值大小。
二进制转十进制
1 1 0 1 基
8 4 2 1 权
- 基乘权相加
- 1101 = 11+02+14+18=13
十进制转二进制(除二逆序取余)
二进制转八进制
从右往左取3位,算出十进制值。链接起
1101=13
二进制转十六进制
从右往左取4位,算出十进制值。链接起
1101=D
3二进制的四则运算
156(+-*/)21=? 10011100 10101
10011100
+ 10101
10110001
156+21=177 10110001
10011100
- 10101
10000111
156-21=135 10000111
10011100
* 10101
10011100
10011100
10011100
110011001100
156*21=3276 110011001100
111
10101|10011100
10101
100100
10101
011110
10101
01001
156÷21=7...9 111...1001
4.原码反码和补码
为什么要有反码? 为了解决原码做减法的问题
为什么要有补码? 为了解决0有两个编码的问题,多出的一个编码用与多表示一个最低位
原码:是对自然正数(包括0)的二进制编码,正数在计算机中直接用原码进行存储。
反码:可以理解为是求补码的中间过程,反码=原码逐位取反。计算机并不存储反码。
补码:计算机求相反数的编码,补码=反码+1。负数在计算机中使用补码进行存储。
计算机通过补码进行减法运算和位运算
正数的源码=反码=补码
负数的源码反码和补码:
- 源码:符号位+真值
- 反码:符号位不变,其余数取反。
- 补码:反码+1
eg:
-36+38
-36原码=10100100
-36反码=11011011
-36补码=11011100
+
38原码=00100110
结果=1 00000010->2
=1 00110110 00110101 11001010
-31-22=-31+(-22)
-31原码=10011111
-22原码=10010110
-31反码=11100000
-22反码=11101001
-31补码=11100001
+
-22补码=11101010
//补码转回反码转换原码转换十进制
结果=1 11001011->11001010->10110101=-53
运算符
- 或:| :一个为1则为1,两个为0才为0
- 与:& 同时为1才为1,一个为0则为0
- 非:~ 按位取反
- 异或:^ 相同为1,不同为0
- 带符号右移:>>正数补0负数补1。其值相当于除以2。-4>>=-2 1100->1110->1101->1010->-2;4>>=2 0100->0010->2
- 无符号右移:>>>-4>>>=130;10000100>>>010000010=130
- 有符号左移:>> 右边空出的位置补0,其值相当于乘以2。-4<<=-8;(-4原码)10000100->(-4反码,符号不变取反)11111011->(-4补码,反码+1)11111100->(-4补码向左移一位,右边补0)11111000->(转回反码-1)11110111->(转回原码)10001000=-8