1. --a &&echo "TRUE" || echo "FALSE"
可以看作((--a)&&(echo "TRUE"))||(echo "FALSE")
先对a自减,a=0,然后 a为逻辑非,故不执行&&后的语句,而由于||之前的表达式值为FALSE,故执行||后的语句
2. b-- &&echo "TRUE" || echo "FALSE"
可以看作(b &&(echo "TRUE"))||(echo "FALSE")b--
b=1 然后&&做echo命令,而echo的返回值非零,故||之后的表达式不执行
3.a<4为真,故c=9
echo的c=9
假设你的数据时存储在一个文件中,文件名字为test.txt
第一列的和:cat test.txt | awk '{sum1+= $1}END{print sum1}'
第一列和第二列的平均值:
cat test.txt | awk '{sum1+=$1sum2+=$2count++}END{print sum1/count,sum2/count}'
额.........2^12是表示页的大小是4KB了......2^20就是页的多少.2^20个页,每个页是4K,这样能寻址范围就是32为系统的最大上限了.就是4G了.(2^20*4K=4G)=================================================================
为何2^12表示页是4k的原因是因为一个内存地址对应一个最小内存单元,就是1个字节.4096个内存地址.就是4K这么大小的内存里含有的内存最小单元的个数.
2^20次怎么来的是这样的,包含4096个的地址的表(页索引表)有1024个(因为10位索引每一种变化都指向一个表所以有1024个).有一个表(一级页目录表)包含1024个(道理同上)这样的表.这样就变成最简单的乘法算数了.1024*1024*4096=4G
=================================================================
之所以不采用一级也表是因为一级页表的话就是20位的偏移量.2^20个偏移量存在内存里是比较占空间和没效率的.所以最基础的就是从2级也表开始.在各种系统里页表分级不同偏移位不同.linux 2.6内核里设计上有4级页表.但是只用了3级页表
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)