负数在计算机怎样表示与存储
生活随笔
收集整理的這篇文章主要介紹了
负数在计算机怎样表示与存储
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
負數在計算機中以補碼的形式存儲。
在計算機系統中,數值一律用補碼來表示。
正數的補碼:就是其本身
負數的補碼:是在其原碼的基礎上, 符號位不變, 其余各位取反, 最后+1. (即在反碼的基礎上+1)
[+1] = [00000001]原?= [00000001]反?= [00000001]補
[-1] = [10000001]原?= [11111110]反?= [11111111]補
對于負數, 補碼表示方式也是人腦無法直觀看出其數值的. 通常也需要轉換成原碼在計算其數值.
?
?
測試平臺:64位?X86?Ubuntu
1. 代碼:
#include<stdio.h> #include<stdlib.h>void print(unsigned int ui, signed int i) { printf("unsigned i = %d, RAM form: %x; signed i = %d, RAM form: %x\n", ui,ui, i,i); }void main(void) {print(0, -0);print(1, -1);print(127, -127);print(128, -128);print(256, -256);}?
2. 結果:
baoli@ubuntu:~/c$ ./a.outunsigned i = 0, RAM form: 0;??signed i = 0, RAM form: 0unsigned i = 1, RAM form: 1;??signed i = -1, RAM form: ffffffffunsigned i = 127, RAM form: 7f;??signed i = -127, RAM form: ffffff81unsigned i = 128, RAM form: 80;??signed i = -128, RAM form: ffffff80unsigned i = 256, RAM form: 100;??signed i = -256, RAM form: ffffff00?
3. 分析:
1)在計算機中數值(正數和負數)以補碼的形式保存在內存中
2)-128的補碼是1000 0000;-256的補碼是1 0000 0000;
3)0和-0的補碼是均是0000 0000,補碼1000 0000并不表示-0,而是-128
4)注意-128并沒有對應的原碼和反碼表示
5)使用補碼, 不僅僅修復了0的符號以及存在兩個編碼的問題, 而且還能夠多表示一個最低數. 這就是為什么8位二進制, 使用原碼或反碼表示的范圍為[-127, +127](00000000和10000000都代表0), 而使用補碼表示的范圍為[-128, 127](10000000代表-128).
?
?
?
總結
以上是生活随笔為你收集整理的负数在计算机怎样表示与存储的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言高级编程:数组名赋值给指针变量的用
- 下一篇: C语言高级编程:深入理解const