先明确一下几个概念:数据类型嘚长度
位:是一个二进制位:1或0
字长:整数和指针数据的标称大小(normin size)就是这里的32位或64位
内存:用来装载程序(指令)和数据的地方(還包括全局数据区、堆、栈、系统核心程序),内存地址是一个整数(如c语言中的指针指向的内存地址)cpu从内存地址读取指令,执行加減或逻辑运算操作
最大的内存地址是整数的最大值,在32位的操作系统中整数由32位二进制数组成,最大值等于2^32-1,
因此說32位操作系统内存最大只能是4G,而64位就远不止4G了
C语言中各种数据类型在32位和64位的字节数大部分都相同:
(特殊情况:在 64位机器下的许多程序设计环境,“int”变量仍然是 32位宽不过“long”和指针是
在64bit的centos下,运行32bit下的二进制代码 然后爆出了各种错误。
后来网上找了许多资料 發现这个还比较靠谱:
我们知道在64bit的机器上可以运行32bit的代码, 那这里需要什么支持吗
当然需要, 如果你没有安装必要的包 你使用-m32参数會报下面这样类似的错误:
当前,“64-bit”是比较流行的一个词许多人提到“64-bit”,就会想起高性能和大数据量一时间,似乎“64-bit”成为了性能瓶颈的救命稻草
这一切其实很简单,只要理清“x-bit”的本质无论是从“8-bit”到“16-bit”还是“32-bit”到“64-bit”,其实质都是一样的
所谓“64-bit”,实际上是指计算机用来表示数据的基本单位的存储长度是64个“位”即64个“比特”。而且“x-bit”机器的寄存器、CPU(U)、地址总线、数据总线等表示数据的“尺寸”都是“x-bit”的“x”值。这个“x-bit”就是一个基本的存储单位,这个基本的存儲单位就像一个盒子盒子多大,就能放多大的物件这是完全从物理客观存在的角度来看待“x-bit”的。这样的盒子在计算机中被存放实際的物件,也被用来存放寻找物件的“门牌号码”依照“门牌号码”这个地址,我们可以在这个地址指向的盒子里找到相应的物件这裏的“门牌号码”,有个我们熟悉的名字――“指针”也就是说,计算机中存储的无非是数据或指针指针指向的无非又是数据和指针,通过指针指向的指针最终我们能找到的是数据。
“64-bit”甚至“128-bit”,在实际应用中这些概念究竟和什么相关?
试想假如拿一个32位的操作系统在64-bit的硬件上运行,是否可以
是否我们编译好一个windows程序,就可以在任何windows操作系统上运行
Java吹的“一次编译,到处运行”是否真如其所言如是,这个又是什么道理
其实,“64-bit”这个概念是架构在硬件的CPU基础上的而与其密不可汾的,能有效体现“64-bit”和“32-bit”不同的是硬件之上的软件。所以与“64-bit”相关的,无非是这两大类只是软件要适应硬件、发挥硬件潜能,还要依赖编译器这一特殊软件把高级语言代码转换为机器级别的ISA(instruction-set architecture指令集体系结构)所认可的机器命令。
在之前我们讲解了数据模型,不同bit位数的CPU支持的数据类型不完全相同为了更好发挥机器的物理特性,我们编写程序的时候就要利用这些更多bit位的CPU,这就给程序員带来一个问题如何写“64-bit”的代码,或如何把“32-bit”的代码移植到“64-bit”的机器上来
加载中,请稍候......