计算机基础知识重点汇总

   以下内容均为个人按自己所需整理而来,内容引用各个其他前辈的博客,如有所涉及版权问题,其版权归原作者所有!

 

一.进制转换

   1.二进制–>十进制
   方法:二进制数从低位到高位(即从右往左)计算,第0位的权值是2的0次方,第1位    的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的      值就是十进制的值了。
   1010(B)
   1×2^3+0×2^2+1×2^1+0×2^0=10

 

    2.十进制–>二进制
方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
106(D)
1、106 ÷ 2 = 53 ……0
2、53 ÷ 2 = 26 ……1
3、26 ÷ 2 = 13 …….0
4、13 ÷ 2 = 6 ……1
5、6 ÷ 2 = 3 ……..0
6、3 ÷ 2 = 1 ……..1
7、1÷ 2 = 0 ……….1
所以转换后的二进制数为:1101010

 

ASCII 码
学过计算机的人都知道 ASCII 码,总共有 128 个(0-127),用一个字节的低 7 位表示,0~31 是控制字符如换行回车删除等;32~126 是打印字符,可以通过键盘输入并且能够显示出来。
其中48~57为0到9十个阿拉伯数字
65~90为26个大写英文字母
97~122号为26个小写英文字母

 

 

 

一. 机器数和真值

  • 机器数
    一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里的 00000011 和 10000011 就是机器数。

  • 真值
    因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

    例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

 

 

二. 原码, 反码, 补码的基础概念和计算方法.

 

在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式.

  • 原码
    原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001

[-1]原 = 1000 0001
  • 1
  • 2
  • 3

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

[1111 1111 , 0111 1111]
  • 1

[-127 , 127]
  • 1

原码是人脑最容易理解和计算的表示方式.

反码

反码的表示方法是:

正数的反码是其本身

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反
  • 1
  • 2
  • 3

可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.

  • 补码

补码的表示方法是:

正数的补码就是其本身

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补
  • 1
  • 2
  • 3

对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.

 

为何要使用原码, 反码和补码

即: 1-1 = 1 + (-1) = 0

为了解决原码做减法的问题, 出现了反码

 

于是补码的出现, 解决了0的符号以及两个编码的问题:

使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].

 

数据类型字节数和取值范围

 

计算机基础知识重点汇总_第1张图片

理解java内存处理

总结:

  1. 定义一个局部变量的时候,java虚拟机就会在栈中为其分配内存空间,局部变量的基本数据类型和引用存储于栈中,引用的对象实体存储于堆中。因为它们属于方法中的变量,生命周期随方法而结束。
  2. 成员变量全部存储与堆中(包括基本数据类型,引用和引用的对象实体),因为它们属于类,类对象终究是要被new出来使用的。当堆中对象的作用域结束的时候,这部分内存也不会立刻被回收,而是等待系统GC进行回收。

 

创建字符串的两种方式:

  1. 字面量形式:如:String s = “hello”;
    JVM检测这个字面量,如果JVM通过字符串常量池查找不到内容为hello的字符串对象存在,那么会创建这个字符串对象,然后将刚创建的对象的引用放入到字符串常量池中,并且将引用返回给变量s。如果发现内容为“hello”的字符串存在字符串常量池中,那么直接将已经存在的字符串引用返回给变量s。
  2. 使用new创建:如:String s = new String(“hello”);
    new创建字符串时首先查看池中是否有相同值的字符串,如果有,则拷贝一份到堆中,然后返回堆中的地址;如果池中没有,则在堆中创建一份,然后返回堆中的地址(注意,此时不需要从堆中复制到池中,否则导致浪费池的空间)

一:==和equals区别

总结来说:
1、对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址

2、对于equals方法,注意:equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

 

二:try catch finally return 执行顺序

总结:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(计算机原理组成)