前、后端都有必要掌握的计算机理论,计数法-上篇

163 阅读3分钟

背景基础知识点:计算机的运行存储都是以补码进行(官方),世界万物,或有或无,或真或假,或男或女,二进制逻辑简单(个人肤浅认为)

  1. 十进制简单说明:以10为基础,0,1,2,3,4....9,逢10进一,十进制很简单,也是我们生活中常用的计数法,你最多有十个指头(普遍情况下)
  2. 二进制:只有0,1,逢2进一
  3. 十进制转二进制方法:反复除2,直到商为0,然后把余数从下往上写,按从左到右排列写入,结果就是一个二进制格式

举例:十进制4转二进制,结果 100 如下图

4-1.jpg

4 二进制转十进制方法:

二进制转十进制就比较简单:位值*2的n次方,n是位,或叫索引,用上面二进制 “100” 举例

4-2.jpg

5 原码、反码、补码 ,计算机的运行存储都是以补码进行的

1. 正数时,原码、反码、补码一致;
2. 负数时,反码规则原码第一位不变,其它位都翻转;
3. 负数时,补码规则,反码+1;
4. 二进制格式,正数第一位0,负数1;
5. 原码:0010 (十进制2),1010(十进制-2);
6. 反码:0010(十进制2),1101(十进制-2);
7. 补码:0010(十进制2),1110(十进制-2);

5 基本位操作符

1. "&" 位与 :二进制对应位都是1,结果为1
2. "|" 位或 :二进制对应位有一个是1,结果为1 
3. "^" 位异或:二进制对应位,二者不同,结果为1
4. "<<"左移, << n, 左移n 位,就是乘以2的n次方, 向左移动n位,从右往左推,高位丢弃,低位补0
5. ">>"右移, >> n,右移n位,就是除以2的n次方,向右移动n位,从左往右推n位,右侧n位丢弃,左侧补0

再次强调:计算是以补码进行存储运算,原码->反码->补码,为什么要进行原码->反码->补码转换呢,计算机没有减法,只有加法,加一个负数

6 举例

1. 2 & -2  结果:2 ,说明:0010 与 1110 位与 二进制0010 ,十进制2
2. 2 | -2  结果:-2  ,说明:0010 与 1110 位或 二进制1110 ,补码->反码(1101)->原码 1010 ,高位1 为负数标识符号,0010对应 十进制2,结果-2
3. 2 ^ -2 结果:-4,说明:0010 与 1110 位异或 二进制 1100,补码->反码(1011)->原码 1100, 高位1 为负数标识符号,0100 对应十进制4,结果-4
4. // a 十进制格式:4,二进制:100
5. a << 2  ,结果等于:4 * (2的2次方)= 16
6. a >> 2 , 结果等于 4 / *(2的2次方) = 1
7. 负数的左移,右移就不举例了,只要求出负数对应补码,就和正数位移规律一致

理论说了好多,有什么用呢,下篇将进一步说明,二进制本身一些规律,技巧,使用场景

~欢迎挑错