1.
C語言不能輸出二進制數,%d 以十進制,%o 以八進制,%x 以十六進制。
C語言中定義變量時,既不指定爲 sighed,也不指定是 unsighed,則默認爲有符號 sighed。
在計算機系統中,數值一律用補碼來表示和存儲。原因在於,可以將符號位和數值位統一處理;
同時,加法和減法也可以統一處理;正數的補碼與原碼相同,負數的補碼符號位不變,數值位各位取反加1。
在編程環境中,得到類型 int、long int、short int 表示的最大和最小的數字:
#include<stdio.h>
int main()
{
unsigned short int a = 0;
a = ~a;
a = a / 2;
printf("%d\n", a);
return 0;
}
#include<stdio.h>
int main()
{
int i = 0, j = 1;
while (j > 0)
{
j++;
i++;
}
printf("%d\n", i);
printf("%d\n", j);
return 0;
}
#include<stdio.h>
int main()
{
int i = 0;
i = ~i;
i = i << (sizeof(int)* 8 - 1);
printf("%d\n", i);
i--;
printf("%d\n", i);
return 0;
}
補碼與原碼的相互轉換,其運算過程是相同的,不需要額外的硬件電路;對一個整數的補碼再求補碼,等於該整數自身。
在數的表示上通過人爲的定義來消除編碼映射的不唯一性,對轉換後的10000000強制認定爲-128。
頭文件<limits.h>定義的符號表示每種類型的極限值:
頭文件<float.h>定義了表示浮點數的符號:
類型 | 下限 | 上限 |
char | CHAR_MIN | CHAR_MAX |
short | SHRT_MIN | SHRT_MAX |
int | INT_MIN | INT_MAX |
long | LONG_MIN | LONG_MAX |
long long | LLONG_MIN | LLONG_MAX |
float | FLT_MIN | FLT_MAX |
double | DBL_MIN | DBL_MAX |
long double | LDBL_MIN | LDBL_MAX |
#include<iostream>
#include<float.h>
using namespace std;
int main()
{
cout << "int 類型能存儲的最大值和最小值" << endl;
cout << "int 類型所佔位數:" << sizeof(int)*8 << endl;
cout << "INT_MAX = " << INT_MAX << endl;
cout << "INT_MIN = " << INT_MIN << endl;
cout << endl;
cout << "long 類型能存儲的最大值和最小值" << endl;
cout << "long 類型所佔位數:" << sizeof(long)* 8 << endl;
cout << "LONG_MAX = " << LONG_MAX << endl;
cout << "LONG_MIN = " << LONG_MIN << endl;
cout << endl;
cout << "long long 類型能存儲的最大值和最小值" << endl;
cout << "long long 類型所佔位數:" << sizeof(long long)* 8 << endl;
cout << "LONG_LONG_MAX = " << LLONG_MAX << endl;
cout << "LONG_LONG_MIN = " << LLONG_MIN << endl;
cout << endl;
cout << "float 類型能存儲的最大值和最小值" << endl;
cout << "float 類型所佔位數:" << sizeof(float)* 8 << endl;
cout << "LONG_LONG_MAX = " << FLT_MAX << endl;
cout << "LONG_LONG_MIN = " << FLT_MIN << endl;
cout << endl;
cout << "double 類型能存儲的最大值和最小值" << endl;
cout << "double 類型所佔位數:" << sizeof(double)* 8 << endl;
cout << "LONG_LONG_MAX = " << DBL_MAX << endl;
cout << "LONG_LONG_MIN = " << DBL_MIN << endl;
cout << endl;
return 0;
}
2.
C++ 的源代碼文件分爲兩類:頭文件和源文件。頭文件用於存放對類型定義、函數聲明、全局變量聲明等實體的聲明,作爲對外接口;而源程序文件存放類型的實現、函數體、全局變量定義。
一般情況下,頭文件常以 .h 或 .hpp 作爲擴展名,而實現文件常以 .cpp 或 .cc 作爲擴展名。頭文件一般不直接編譯,一個源文件代表一個“編譯單元”。在編譯一個源文件時,如果引用的類型、函數或其它實體不在本編譯單元內,可以通過引用頭文件將其它編譯單元內實現的實體引入到本編譯單元。