这个没有同学
我的理解是:
32位的二进制表示也就是2^32=(2^4)*(2^28)=16*(2^28);
64位的二进制表示也就是2^64=(2^4)*(2^60)=16*(2^60)
那跟硬件有关,跟系统无关
结果:
地址总线而已,又不是数据总线。32位地址总线,一个地址放一个字节不就行了,内存就是4GB了
内核怎么占用这些内存是操作系统决定的!至于你说的内存中没有这么多字节的问题,是说操作系统支持的最大内存是2的64次方,但是目前的技术根本用不了这么多的内存!
0x7ffffffffff以上的是存放系统内核的
这里的字节指的是地址编号的字节表示方式 而地址编号最少用8位16进制来表示的 不能单用位来表示
比如在32位操作系统中0x7fff ffff 就是一个地址编号 他不是单用位来表示 而是用字节来表示
比如在64位操作系统中0x7fff ffff ffff ffff 这也是一个地址编号
顺便一提16的16次方等于2的64次方
同理16的8次方等于2的32次方
64位的意思 能有 2的64次方种二进制排列方式。2G内存表示一次能储存2的31次方个二进制排列方式
si没有初值也没被赋值。
"32位计算机是有2的32次方种状态" 引用提问者的话,
答:32位计算机能给系统分配2的32次方个内存地址,注意这里说的是“内存地址”,也就是每个内存的门牌号码。换句话说,32位操作系统给内存编号只能编到32个二进制位,能组合成2的32次方个状态或地址。
因为内存是按字节寻址的,即每个地址对应一个字节,这是规定好的,或者说是硬件限制的
你的问题是把内存地址与内存空间搞混了,内存地址是门牌号码,内存空间相当于一个小房子,一个小房子对应一个门牌号码(地址),一个小房子占用一个字节的内存空间,那32位操作系统能分配多少个房子呢——2的32次方个,这样整个的内存就是2的32次方个字节,即4G内存。
我就用俗话说吧,不科学,但容易懂。
为什么是1024,而不是1000?其实数字1024,用二进制表示的结果为:10000000000
不信你用带二进制的计算器转换一下就知道了。
2的10次方也是1024
所以U盘的容量,是1M,2M,8M,16,32,64,128,256,512,1024(1G),2G,4G.....的倍数关系,也相当于是2的倍数。
还有就是Byte和bit,俗称大B和小b的区别(谁大谁小看名字就知道了吧)
一个小b只能代表一个内容,(0或者1,其中的一个)
两个小b可代表4个内容"2的2次方“(00,11,01,10)
8个小b可代表256个内容"2的8次方“,也就等于一个大B,也可以称一个“字符”或“字节”
(这样所有的英文字母和符号都可以用一个大B表示了)
但汉字可不止256个,还有各种符号,至少10000个,
所以一个汉字至少要2个字节或2个大B(也就是16个小b),这样可以代表65536个不同的内容"2的16次方“。
所以,一个中文的字符占用空间,是英文的2倍
网速的称法是小b,1M的网速说的是1兆小b,正真的速度是128千B(1024除以8)
所以下载最大也就是128KB,,,小b的单位除了网络公司,其它人是没有人用的,
这就是网络公司有夸大的嫌疑,听起来感觉很快,其实慢的很。
强列呼吁国家统一网络公司的叫法,要用大B(10兆的网络下载10兆的文件竟然不是1秒钟,我想骂人),
不知这样讲大家明白否??
如图:2015-5-28手工打字
黄涸 | 2015-10-06 15:15
评论(8)
188 5
“字节”(Byte)
“比特”(Bit)
当你进行网络下载的时候它们会经常出现,同时你获取的速度指示也都以比特/每秒或者字节/每秒来显示。
现在就来弄清楚比特(Bit)、字节(Byte)和千字节(Kbyte)究竟是什么意思,这样你就能理解它们了。
一个比特就是一个二进制数的最小单元,就像我们说我们能够拥有的最小金额的钱就是一分一样,只不过比特是在二进制数中罢了。
一个比特只能拥有一个值,不是0就是1,所以如果我给你一个值0,你可以说它就是一个比特,如果我给你两个(00),你就可以说它们是两个比特了。
现在,如果你将八个0或者1组合在一起,例如0110 1010(在中间加一个空格是为了看起来清晰明了),你就可以说它们是八个比特或者说一个字节。好,这就对了,八比特就等于一字节,而不管它们都是全是0、全是1或者是由若干0和若干1混合而成。
将这些字节加起来,到了1024个字节的时候,就获得了一个千字(Kbyte)了,为什么是1024而不是1000呢?这是由二进制的进位方式造成的,如果你学过数学,你就会知道上述结果是正确的。
回答者:ghost525 - 试用期 一级 4-27 15:01
1bit 就是1位二进制数.
1Byte就是1个字节.1个字节是由8个二进制位组成的.
所以1Byte=8bit.
48位指的是【47:0】,有第0位;
800000000 上面有讲,存放的是系统内核,操作系统用的。
我感觉是这样,欢迎指正。
内存的位宽是1个字节,意思是每次访问内存一个地址单元的时候,可以读/写1个字节;2^32个地址就是2^32个字节
因为在RAM内存中最小的存储单位是8bit也就是1Byte,但是地址总线是32位,所以可以寻址的空间是2^32=4G个最小存储单位,也就是4GB。编号的数字大小不代表内存最小存储单位的大小呀。
先回答第二个问题,注意是16进制,不是十进制,内存可能分配半个字节吗,随着内存越来越廉价,程序设计一般是空间换时间,每个数组是int的四个字节。第一个问题是二维数组赋值给一维数组,应该很好理解,不过我不理解你为什么将那个表达式称为常量表达式,应该是变量表达式吧,而且这个数组[]里应该最大是11,而不是12也不会是12以上,具体细节如果不懂的话,建议你最好在命令行用gdb一步步的慢慢调试,我也是刚刚学,不过你犯的是常识错误。
1、CPU的寻址能力以字节(byte)为单位 ,如32位的CPU可以寻址2的32次方的地址也就是4GB;
2、32位、64位操作系统中的“位”并非计算机中的bit!!!
你换台电脑试试 看地址是不是又 不一样
请注意32是“地址”总线的宽度,即可以寻址的地址个数是2的32次方个,而计算机中以字节位单位存储和解释信息,每个地址(即每个门牌号)指示的空间是一个字节B(即每个门牌号指示的房间大小是一个字节B),那么就是2的32次方个B的房间
楼上的同学有点逗,这里确实是老师讲错了,前48位代表0-ffffffffffff。
应该是
0xffffffffffff
一共12个f吧