計算機系統基礎

計算機系統基礎

聽mooc南京大學袁春風老師的講課筆記

  • ISO C90標準下,在32位系統上
    如下C表達式的結果是什麼?
    -2147483648 < 2147483647
    false(與事實不符)!Why?
    如下關係表達式結果呢?
    int i = -2147483648;
    i < 2147483647
    true!Why?
    -2147483647-1 < 2147483647,結果怎樣?
#include<stdio.h>
int main()
{
    if(-2147483648 < 2147483647)
    printf("false\n");
    else
    {
        printf("true\n");
    }
    return 0;
}

若是將表達式換成-2147483647-1 < 2147483647
結果又會怎麼樣呢

3d

  1. 編譯器如何處理字面量
  2. 高級語言中運算規則
  3. 高級語言與指令之間的對應
  4. 機器指令的執行過程
  5. 機器級數據的表示和運算
  • 當參數len爲0時,返回值應該是
    0,可是在機器上執行時,卻發
    生訪存異常。但當len爲int型時
    則正常。Why?
    訪問違例地址爲什麼是0xC0000005?
sum(int a[ ], unsigned/*int*/ len)
{
int i,sum = 0;
for (i = 0; i <= len–1; i++)
sum += a[i];
return sum;
}
#include<stdio.h>
int sums(int a[],unsigned len)
{
    int i,sum=0;
    for(i=0;i<=len-1;i++)
    {
        sum+=a[i];
    }
    return sum;
}
int main()
{
    int a[2]={0,1};
    printf("%d\n",sums(a,0));
    return 0;
}
  1. 高級語言中的運算規則
  2. 機器指令的含義和執行
  3. 計算機內部的運算電路
  4. 異常的檢測和處理
  5. 虛擬地址空間
    ···
  • **若x和y爲int型, 當x=65535時, y=x*x; y的值爲多少?
    y=-131071。Why?
    現實世界中,x2≥0,但在計算機世界並不必定成立。
    對於任何int型變量x和y,(x>y) == (-x<-y) 總成立嗎?
    當x=-2147483648,y任意(除-2147483648外)時不成立**
  1. 機器級數據的表示
  2. 機器指令的執行
  3. 計算機內部的運算電路
  • **若x和y爲int型, 當x=65535時, y=x*x; y的值爲多少?
    y=-131071。Why?
    現實世界中,x2≥0,但在計算機世界並不必定成立。
    對於任何int型變量x和y,(x>y) == (-x<-y) 總成立嗎?
    當x=-2147483648,y任意(除-2147483648外)時不成立**

  1. 機器級數據的表示
  2. 變量的存儲空間分配
  3. 數據的大端小端存儲方式
  4. 鏈接器的符號解析規則

    第一份講義
相關文章
相關標籤/搜索