記得遠古時代,上第一門計算機課時,書上說:整型數字在計算機中的以補碼形式儲存。今天有人問我這是啥意思。我乾脆就寫了個程式來說明這點,程式的功能是讓使用者輸入乙個整型數字,然後將這個數字所佔據的記憶體按照位和位元組分別輸出。不但可以看出的確是用補碼形式儲存,還能看出是little-endian還是big-endian。
#include
#include
using namespace std;
unsigned char masks = ;
void print_8bits(unsigned char c)
} int main()
int i = atoi(str.c_str());
int i_0 = *((unsigned char*)(&i));
int i_1 = *((unsigned char*)(&i) + 1);
int i_2 = *((unsigned char*)(&i) + 2);
int i_3 = *((unsigned char*)(&i) + 3);
print_8bits(i_0);
cout << " ";
print_8bits(i_1);
cout << " ";
print_8bits(i_2);
cout << " ";
print_8bits(i_3);
cout << endl;
cout << hex;
cout << i_0 << " " << i_1 << " " << i_2 << " " << i_3 << endl;
cout << dec;}}
return 0; }
負數在計算機中的表示
今天,老大讓我調查乙個浮點數轉換為整數的問題。自己就查了些資料,順便複習一下原碼 反碼和補碼。原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組...
負數在計算機中的表示
原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組的5的反碼為 0000 0101 5的原碼為1111 1010。補碼 正數的補碼就是其原碼 負...
小數在計算機中的表示
執行如下 得到結果 你猜是多少呢?嗯你沒有看錯得到的答案是57.所以為什麼會出現這種情況呢?首先需要 的是0.58這個數字是如何在計算機中儲存的。我們一般用下面格式表示浮點數。sp m 其中s是符號位,p是階碼,m是尾數。單精度浮點數是32位,雙精度浮點數是64位。s pm表示公式 偏移量1823 ...