1). 进制的表示
- 假如用两个字节表示 一个整数, 如下:
十进制数字1 的二进制表现形式: 0000 0000 0000 0001
十进制数字2 的二进制表现形式: 0000 0000 0000 0010
- 有符号数和无符号数的概念
把二进制数中的最高位(最左边的那位)用作符号位
对于有符号数,最高位被计算机系统规定为符号位(0为正,1为负)
+2 >>> 0000 0000 0000 0010
-2 >>> 1000 0000 0000 0010
如果是1-1, 就不能直接把上面的两个进制数据进行相加了, 需要按照补码进行相加才是正确的结果
2). 原码、反码、补码
- 如果计算补码
正数:原码 = 反码 = 补码
负数:反码 = 符号位不变,其他位取反
补码 = 反码+1
1 的原码:0000 0000 0000 0001
-1的原码:1000 0000 0000 0001
-1的反码:1111 1111 1111 1110
-1的补码:1111 1111 1111 1111
重新计算1-1的话, 得这样 >> 1+(-1)
1111 1111 1111 1111
0000 0000 0000 0001
---------------------------
0000 0000 0000 0000
- 从补码转回原码
原码 = 补码的符号位不变 -->数据位取反--> 尾+1
-1的补码:1111 1111 1111 1111
取反:1000 0000 0000 0000
-1的原码:1000 0000 0000 0001
正数:原码 = 反码 = 补码, 所以不用转
3). 进制间转换
- 10进制转换2进制 和 2进制转换10进制

- 10进制转换16进制 和 16进制转换10进制

- 10进制转换8进制 和 8进制转换10进制

各种进制之间都可以相互转换
- 2进制方法 bin()
- 8进制方法 oct()
- 10进制方法 int()
- 16进制方法 hex()
- 如果转换的时候不指定进制类型, 就不用加引号


4). 位运算
- << 按位左移 >> 右移
各二进位全部左移n位,高位丢弃,低位补0
各二进位全部右移n位,保持符号位不变
- & 按位与
全1才1否则0 :只有对应的两个二进位均为1时,结果位才为1,否则为0
- | 按位或
有1就1 只要对应的二个二进位有一个为1时,结果位就为1,否则为0
- ^ 按位异或
不同为1 当对应的二进位相异(不相同)时,结果为1,否则为0
- ~ 取反
9的原码 ==> 0000 1001 因为正数的原码=反码=补码,所以在 真正存储的时候就是0000 1001
接下来进行对9的补码进行取反操作
进行取反==> 1111 0110 这就是对9 进行了取反之后的补码
既然已经知道了补码,那么接下来只要转换为 咱们人能识别的码型就可以,因此按照规则 ,把这个1111 0110 这个补码 转换为原码即可
符号位不变,其它位取反==> 1000 1001
然后+1 ,得到原码 =======>1000 1010 这就是 -10
422

被折叠的 条评论
为什么被折叠?



