计算机理论基础之二进制与数/字

版权声明:本文为博主原创文章,未经博主允许可以转载,但请注明出处。 https://blog.csdn.net/windanchaos/article/details/82564216

最近准备改掉以前的一个通病,理论过重,实践过轻。简单的说就是代码撸得太少,缺少实践。但是对原理的本能兴趣导致,撸代码也撸不走,撸得慢。正准备把《JAVA300集2018版(2.28修订,5.28日修订完毕)》里的代码按自己的兴趣敲一遍,今天是第一天。准备把Java的八大基本数据类型敲一下,发现很多地方有更底层的东西需要理解。
这里记录一二。

计算机底层说到底是一堆电路,一个电路只有2种状态:通和不通。N个电路就可以有2^N次个状态的组合,它们排列组合成一个序列。
这个序列被人设的,按照规则进行了解释。
一堆无序的排列组合需要赋予人类世界的意义,所以确立了二进制到符号(字符、数字)的规则。
符号是被认为携带意义的感知。
意义就是一个符号可以被另外的符号解释的潜力。

我们学习就是要理解这种既定的规则。

人类世界沟通和交流用的是语言和符号,不同母语的国家交流需要翻译。计算机与人类传递信息,需要翻译。

主要(目前我的理解深度就这么多)两大类:

  • 数,代表人类世界的数字,核心作用,计算。
  • 字,代表人类世界的语言,核心作用,交流。

理解byte

计算机中一个电子元件的状态是1bit(通或不通),而人设的规定存储信息的最小单元是一个字节即 8 个 bit,即1byte。
这里byte的意义有两种:

  • 表征计算机处理信息的最小单元;
  • 作为一种基本的数据类型(Java有,C没有);

它组合是:
00000000-11111111
被解释为10进制的0-256(2^8次方)种变化。

数的规则

主要围绕着二进制如何被解释为数,或者反向的数如何用二进制来表达。

数分配的存储资源大小

Java中八种基本数据类型:short、int、long、float、double、boolean、byte、char。每种类型都按传统规定了存储在计算机当中占据空间的大小,好比限定了装载这些数的盒子。
byte b; 1字节
short s; 2字节
int i; 4字节
long l; 8字节
float f; 4字节
double d; 8字节
boolean bool; false/true 1字节
char c; 2字节(C语言中是1字节)
为什么要这么做呢?这是一个很有意思的问题,根本上说还是在于计算机资源是有限的。人设的规定数据范围和大小,是为了限定申请资源方对计算机资源占用过多,或者说是为了让计算机“物尽其用”,合适的大小在性能上也有一定差异。所以出现的溢出(通俗的说是给装载数的壳子被数给撑爆了),未考虑到场景下的数的大小。
计算机资源是有限的,所以无法表征无理数及无限循环小数,只能在精度范围内取近似值。

数的范围

数的范围是排列组合的范围。
分有符号和无符号,有符号的首位做符号位。
无符号范围:0 –(2的N次方)-1
有符号范围:负的(2的N-1次方)到(2的N-1次方)-1

如short

字的规则

涉及到编码。网上文章很多,比如计算机编码总结

猜你喜欢

转载自blog.csdn.net/windanchaos/article/details/82564216