在c语言的代码中,变量都是需要指定变量的类型,要讲清楚变量类型是什么需要先讲清楚 程序与计算机硬件之间的关系。程序其实是数据结构算法的组合,其中的数据结构主要是数据,数据对应到代码中就是各个变量(这里将变量常量等统一称作变量来看待),算法指的是程序中的判断逻辑和基本的数学计算,其实程序中的逻辑判断本质上也是计算(计算机中的计算其实是 布尔运算 其可以支持程序中的逻辑判断和数学计算)。

阅读全文

上一篇讲了 ptmalloc 在初始化的过程中做的一些准备工作 主要是内存的申请,这里主要是基于初始化的数据格式对内存进行分配、回收管理。重点是 各种 bin的使用,其如同缓存 减少程序频繁的内存申请操作 对内核的调用(毕竟需要且到内核态执行代码)。

阅读全文

glibc中的malloc方法其实是映射到 __libc_malloc 的,其通过ASM的符号表的形式来实现

1
2
3
4
strong_alias (__libc_malloc, __malloc) strong_alias (__libc_malloc, malloc)
define strong_alias(original, alias)
.globl C_SYMBOL_NAME (alias) ASM_LINE_SEP
.set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original)
阅读全文

在计算机中,数字是用二进制来表示的,使用二进制的方式考虑到两点 1. 问题简单化 电路简单 2. 计算简单化 二进制特性使然。在计算机中 数字是有限位的这是与数学概念不同的地方,比如在32位系统中 char 类型表示1个byte 1个byte由8个bit组成,这8个bit的数字表达能力(能表示的不同状态)是 2^8 = 256 个,也就是说1个byte能表达的数字范围是 1 ~ 256 考虑到0的特殊性 需要把 0 也加进来 这时候的表达范围是 0 ~ 255 。对于自然数 存在负数的形式 需要将一半的数据拿来表达负数,这个时候1byte能表达有符号数字的范围是 -1 ~ -128 + 0 ~ 127 也就是 -128 ~ 127 ,这个是概念 在这些比特位上如何去实现这样的设想呢,目前的计算机中是将正数和零 正常存储(也就是存在低位)负数通过补码的形式存储(存储在高位) 且 补码的求法是 补码 = 反码 + 1

阅读全文

经过对更多的资料的查阅,我发现搞清楚整个电子的发现过程对理解三极管的工作原理有更大帮助。并且我将思路从分析电子的运动规律切换到分析电子形成的电场,对晶体管的工作原理分析 就更顺畅了。目前还无法观察到电子的运动轨迹,所以想详细的分析电子的分布和运动轨迹也是一个目前来说 走不通的思路。
想要理解这篇文章需要具有一定的物理知识。

阅读全文

内存一般是指 随机存取存储器 (英语 random access memory 缩写 RAM) ,用于存储CPU需要的数据,根据构造不同 有 静态 DRAM 动态 SRAM 之分,静态内存 只要通电就能保持数据 但是需要更多的晶体管,容量难以做大,动态内存可以通过一个晶体管和一个电容来实现一个bit的表示,在电路上简化了很多 可以将容量做大,缺点是 由于电容上的电荷容易丢失 需要不停的充电。

阅读全文
作者的图片

fantiq

author.bio


author.job


China HangZhou