zoukankan      html  css  js  c++  java
  • 深入理解计算机系统 第2章 信息的表示和处理

    一,概念

    1.计算机存储和处理以一概念二值信号表示的信息;
      计算机使用8位二进制,即1字节(byte)做为最小的可寻址存储器单位。
    2.字长(word size)
      每台计算机都有一个字长,指明整数和指针数据的标称大小(nomial size)
      字长决定了系统虚拟地址空间的最大的大小,例如一个字长为n位的机器,
      其指针也为n个字长,指针所能访问的虚拟地址空间就是0~2^n-1(也就是指针的表示范围,无符号)
      例如:现在用的32位字长的计算机,限制了虚拟地址空间为4G
    3.字节顺序:
      一个超过一个字节长的数据在存储器中各字节是如何排序的,
      两种字节序:大端字节序和小端字节序
      举例, 假设一个类型为int的变量x地址为0x100,也就是说地址表示式&x=0x100.
      那么,x的四字节将被存储在ox100,0x101,0x102,0x103这4个连续的空间里
      假设x的值为 0x12345678
    大端法:数字的高位存在低地址,从低地址->高地址方向看跟日常书写一致
    0x 100  101  102  103        // 地址 低-->高
    --+----+----+----+----+----n
    --| 12 | 34 | 56 | 78 |---   // 每个字节存放顺序
    --+----+----+----+----+----
    小端法:数字的高位存在高地址,看到的跟日常书写相反。
    0x 100  101  102  103
    --+----+----+----+----+----
    --| 78 | 56 | 34 | 12 |---
    --+----+----+----+----+----

    4.移位运算:
     C语言中有符号无符号数的左移都是在低位补0
     C语言中对于无符号数的右移采用逻辑右移,也就是高位补0
     有符号数一般采用算术右移,也就是高位用数原来的最低位(符号位)填充。
     有符号数(16bits)0x1000 >> 3 = 0xF000
    5.二进制数:
     现在计算机一般采用补码表示数(有符号与无符号数)
     对于n位无符号数X, X = X0*2^0 + X1*2^1 + ... + Xn-1*2^(n-1),
     有符号数 X = -Xn-1*2^(n-1) + X0*2^0+...+Xn-2*2^(n-2)
    6.有符号数与无符号数的转换
      int sx;
      unsigned ux = (unsigned)sx;
      转换并没有改变位的实际存储位,只是对这个位模式进行不同的解释
      sx = 0xFFFF FFFF = -1; 转换后 ux = 0xFFFF FFFFF = 2^32-1
    7.扩展一个数字的位表示
      short sx = -12345; // 0xcfc7
      unsigned usx = sx; // 0xcfc7
      int    x = sx;      // 0xFFFF CFC7 == -12345
      unsigned ux = x;   // 0xFFFF CFC7
      unsigned uy = usx; // 0x0000 CFC7
      unsigned uz = sx;  // 直接对short转换 =0xFFFF CFC7 or 0x0000 CFC7 ??
      注意下面两个转换过程结果不一样
     a) sx --> (int)sx --> (unsigned int)sx
     b) sx --> (unsigned short)sx --> (unsigned int)sx
      unsigned uz = sx;  // 是a类型转换结果是 0xFFFF CFC7


    待续……




  • 相关阅读:
    动手学习TCP:TCP连接建立与终止
    动手学习TCP: 环境搭建
    Python 数据分析4
    Django unittest 单元测试
    Django commands自定制
    Python mac安装mysqlclient的一个bug
    Centos7 开机启动流程
    Centos 06 文件类型和扩展名&索引节点inode和存储块block
    Centos 05 系统目录讲解
    Linux 踩过的坑系列-01
  • 原文地址:https://www.cnblogs.com/huiqin/p/3674855.html
Copyright © 2011-2022 走看看