zoukankan      html  css  js  c++  java
  • 字,寻址和移位

    最近在读深入理解计算机系统一书,顺便做了些笔记

    每台计算机都有一个字长,指明整数和指针数据的标称大小,因为虚拟地址是以这样的一个字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。即:对于一个字长为w位的机器而言,虚拟地址的范围为0~(2的w次方-1),程序最多访问2的w次方个字节
    寻址和字节顺序
    最低有效字节在最前面的方式,称为小端法。大多数intel兼容机都采用这种方法
    最高有效字节在最前面的方式,称为大端法。大多数IBM和microsystems采用这种规则。
    还有比较新的微处理器采用双端法,即把它们配置成作为大端或者小端的机器运行
    设变量x类型为int,位于地址0x100处,它的十六进制值为0x01234567.地址范围为0x100~0x103的字节
    大端法
        0x100   0x101  0x102   0x103
             01      23      45      67
    小端法
        0x100    0x101    0x102    0x103
         67        45       23       01
    注意:在0x01234567中,高端字节的十进制值为0x01,而低位字节值为0x67
    移位运算
    左移:x向左移动k位,丢弃最高位的k位,并在右端补k个0  
    x=01100011  x<<4  x=00110000
    右移:
    逻辑右移,算术右移
    逻辑右移在左端补k个0,算术右移在左端补k个最高有效位的值。
    x=10010101  x>>4(逻辑右移)  x=00001001
    x=10010101  x>>4(算术右移)  x=11111001
    c语言标准并没有明确定义应该使用哪种类型的右移。对于无符号数据(也就是以限定词unsigned声明的整型对象),右移必须是逻辑的。而对于有符号数据(默认的声明的整型对象),算术的或者逻辑的右移都可以。实际,几乎所有的编译器组合都对有符号数据使用算术右移,且许多程序员也都假设机器会使用这种右移
    java对于如何进行右移有明确的规定。表达式x>>k会将x算术右移k个位置,而x>>>k会对x做逻辑右移

  • 相关阅读:
    iOS开发UI篇—Quartz2D使用(绘图路径)
    iOS开发UI篇—Quartz2D简单使用(三)
    iOS开发UI篇—Quartz2D使用(图片剪切)
    WordPress主题开发: 制作文章页面single.php
    Wordpress页面判断
    为WordPress某个文章添加额外的样式
    Wordpress本地伪静态设置
    Wordpress添加关键词和描述
    Wordpress制作sidebar.php
    Wordpress固定链接设置
  • 原文地址:https://www.cnblogs.com/tuteng/p/2977127.html
Copyright © 2011-2022 走看看