二进制数
计算机底层说到底是一堆电路,一个电路只有2种状态:通和不通。N个电路就可以有2^N次个状态的组合,它们排列组合成一个序列。
这个序列被人设的,按照规则进行了解释。
一堆无序的排列组合需要赋予人类世界的意义,所以确立了二进制到符号(字符、数字)的规则。
符号是被认为携带意义的感知。
意义就是一个符号可以被另外的符号解释的潜力。符号之间解释的链,即可达到信息交换的目的。
我们学习就是要理解这种既定的规则。
人类世界沟通和交流用的是语言和符号,不同母语的国家交流需要翻译。计算机与人类传递信息,需要翻译。
主要(目前我的理解深度而言)两大类:
- 数,代表人类世界的数字,核心作用,计算。
- 字,代表人类世界的语言,核心作用,交流。
尽管在计算机内部,数字的表象被包含在字符内,也就是字符集中有可以表示数字的字符,但从作用上来说,表象和实质还是有差异。从代码上来看差异:
int a=124;
string b="124";
char c='124';
//没写过程序的人看到124,认为他们是一个东西。但是在计算内部,却是3种信息。
//代码写的是人,但是传递给计算机处理的时候,负责解释这些字符的是编译器。
理解byte
计算机中一个电子元件的状态是1bit(通或不通),而人设的规定存储信息的最小单元是一个字节即 8 个 bit,即1byte。
这里byte的意义有两种:
它组合是:
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
字的规则
涉及到编码。网上文章很多,比如计算机编码总结。
也可以看看这篇:彻底弄懂uinicode编码
计算机内的信息流转
最终处理的都是二进制的信号;
为了方便计算机和人类信息传递,出现了不同层次的语言(一系列规则):
- 机器语言:每一条机器指令都是二进制形式的指令代码,计算机硬件可以直接识别。高级语言程序通常也需要翻译成汇编语言程序,再进一步翻译成机器语言代码。机器指令代码是被烙印在硬件上的,写死的,所以不同厂商会有不同的指令编码集。
- 汇编语言:是为了便于理解与记忆,将机器指令用助记符代替而形成的一种语言。汇编语言的语句通常与机器指令对应,因此,汇编语言与具体的计算机有关,属于低级语言。
- 高级语言:与具体的计算机硬件无关,其表达方式接近于所描述的问题,易为人们接受和掌握,用高级语言编写程序要比低级语言容易得多,并大大简化了程序的编制和调试,使编程效率得到大幅度的提高。
相关阅读
随机函数用于产生伪随机数,需要头文件stdlib.h。int rand()可以产生一个[0,RAND_MAX]范围内的伪随机数,其中RAND_MAX是一个系统定义
在看文章时,我们时不时会碰到各种流程图:业务流程图、功能流程图、页面流程图、用户操作流程图、系统流程图等等这些叫得出名叫不出
总述:pthread_create是(Unix、Linux、Mac OS X)等操作系统的创建线程的函数。它的功能是创建线程(实际上就是确定调用该线程函数的入
在前几天,我下载了SQL Server2017版,并且完成了相应配置。 在自己进行实验的过程中发生了两个问题。由于下载中的疏忽,我没有注意SQL
文章分享了经济型连锁酒店行业的相关数据的分析方法,希望能够对你有所帮助。随着“大旅游”、“大住宿”的概念兴起,酒店行业作为其