二进制
二进制是计算机用的一种计数法则,在这里2就是10。二进制只有0和1两个基本数字和三种运算。这种方式抗干扰,运算还简单。
那么进制转换用什么方法呢?
10转2用“8421”法就可以:看这个数是里面那几个数相加,有就是1,没有就是0。这个牵扯到二的n次方的问题,看他是用的二的几次方。八进制是看3位一组二进制,十六进制是4位一组二进制。
比如我们的7,转换成8位二进制是00000111,转8禁止就是三位一体:00 000 111,也就是八进制的007。十进制转换到r进制,比如二进制用的是短除2,看是余1还是整除,把余数从下往上穿起来。
那我们得出:十进制处以r,再把余数逆序排列就可以。那么有小数的呢?我们把他乘以r,然后一直取整数部分,整数部分是1,就用小数部分接着算,到小数部分是0结束,从上往下穿起来。别忘了加小数点!
总结一句:乘r取余,除r取整。
我们也可以用2次方来做2进制:只需要看他乘了那几个2的次方,乘了就是1,反之是0。这个方法叫“位权法”。
源码,反码和补码
首先注意,我们要注意正负。
这些就是为了做减法而生。
源码:用最高为表示符号位,1是负数,0是正数。一个数字的源码就是它本身。正数的反码跟源码一样,负数则是所有位按位取反,除了符号位。但是反码计算还是解决不了所有的加法问题,于是诞生了补码。正数的补码还是源码,负数的补码是反码加1。补码等于无符号二进制运算。补码能够解决两个负数相加结果不对的问题。还有一种移码,是补码的符号位取反,用来简化浮点数的乘除,这里不涉及。
存储单位
字节(B),8位2进制
千字节(KB),1024B’
兆字节(MB),1024KB
吉字节(千兆字节,GB),1024MB
太字节(万亿字节,TB),1024GB
时间复杂度
O(1)常数
O(logN)对数
O(N*logN)线性对数
O(N^K)k次方(有几层循环就几次方)
空间复杂度
程序运行所占空间的大小就是空间复杂度,包括数据存储、输入数据和辅助变量三种空间。
空间复杂度只是一个估算,并没有准确值。而且只看整体,看整体的量级。注意一个特性:如果开数组,数组是几维的,空间复杂度就是N的几次方。(N*N这样的N维数组)