通俗易懂C语言--数据

一些基本的数据就不写了,比如int/float/Boolean什么的,主要着重说一下二进制与十六进制的一些运算

1KB  = 1024B,1024B=8x1024b=8192bit,小b是bit,大B是Byte

在bin文件中,0x1000=4096字节=4096B,所以0x1000=4KB

基础知识小结

一个存储单元可以存储8个bit,也就是8b,8位二进制,1B=8b,1KB=1024B,

假如CPU的寻址能力位8KB,那么它的地址总线宽度为13。8KB=8X1024B=2^13=8192B。

1KB的存储器有1024个存储单元,存储单元编号从0到1023.

1KB的存储器可以存储1024个byte(字节),1byte=8bit,所以可以存储8192个bit。

在存储器中,数据和程序都是以二进制的形式存放的。

物理地址

这个在BIOS研发中比较重要,SIO初始化等会用到这些,8086CPU存储的信息的最大长度是16位的,但是有20位地址总线,所以物理地址=段地址X16+偏移地址,这个X16其实就是二进制数左移4位,比如8086CPU要访问地址123C8H的内存单元,其实就是1230化为二进制,左移4位,12300+00C8=123C8。

这里其实能看明白一个事,就是一个十六进制数左移4位是在右侧加0,右移4位就是减最右侧一个数,当减少到没这么多位了,直接就是0

额外知识补充---------------------------

栈(zhan)stack

一种具有特殊的访问方式的存储空间。入栈push就是将一个新的元素放到栈顶,出栈pop就是从栈顶取出一个元素,栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出,所以就是先进后出。

堆 heap

在整个程序被分配的内存空间里,栈是系统自己使用和分配,自上而下的累积。其中还有一部分内存空间是给程序猿使用的,即你可以通过程序动态占有一部分内存(如 C 语言的 malloc ,C++ 的 new ,其他高级语言的引用类型),这部分内存叫“堆”。它和栈不一样:

  • 堆是 自下(内存低地址)而上(内存高地址) 的累积的
  • 堆没有“先进后出”这种规则,它就是简单粗暴的占有和释放
  • 堆中被占用的内存不会自动释放,需要手动释放,或者通过虚拟机定期 GC(如常见的引用计数方法、标记清除方法等)

猜你喜欢

转载自blog.csdn.net/u011397314/article/details/121207549
今日推荐