c或c++语言什么时候用补码来运算,C/C++(基础编码-补码详解)
兩個(gè)數(shù)的交換
1.引入第三者。 2.求和運(yùn)算,求差。(這樣會(huì)產(chǎn)生內(nèi)存溢出) 3.異或運(yùn)算
a = a^b;
b = a^b;
a = a^b;
8b(bit位) = 1B(Byte=字節(jié))//最小單位是字節(jié)
32位機(jī):2^32 = 4G尋址能力
(王爽--統(tǒng)一編址,匯編語(yǔ)言) char類型一個(gè)字節(jié),8位。[-128,127],2^8=256種, why?[-128,127];深層的編碼采用補(bǔ)碼,1,表示負(fù)數(shù)。 正常的:
0000 0000 1
0000 0001 2
0111 1111 127
...
1000 0000 -0
...
1111 1111 -127
這樣1+-1=-2; 補(bǔ)碼規(guī)則:
0000 0000 0
0000 0001 1
0111 1111 127
...
1000 0000 -128
-127
...
1111 1111 -1
計(jì)算機(jī)只會(huì)做加法,1+-1=0;0000 0001 + 1111 1111= 0000 0000;高位溢出得0;
#include
int main() {
char a = 0;
disBin(a);
char b = 1;
disBin(b);
char c = 2;
disBin(c);
char d = 127;
disBin(d);
char e = -128;
disBin(e);
char f = -2;
disBin(f);
char g = -1;
disBin(g);
}
//打印一個(gè)數(shù)的二進(jìn)制
void disBin(char ch) {
int i = 8;
while(i--) {
if((1<
printf("1");
}else {
printf("0");
}
if(i%4 == 0) {
printf(" ");
}
}
putchar(10);
}
補(bǔ)碼的出現(xiàn)所有的乘法,除法,減法,都用減法實(shí)現(xiàn)。 補(bǔ)碼的規(guī)則:(運(yùn)算互為逆運(yùn)算) 所有的整數(shù)的補(bǔ)碼是他本身,所有的負(fù)數(shù),取絕對(duì)值后取反,加一。 逆過(guò)程的運(yùn)算,最高位是1,是負(fù)數(shù)。全部參與運(yùn)算取反加一。 0的補(bǔ)碼是0; 補(bǔ)碼的運(yùn)算相當(dāng)于12進(jìn)制的時(shí)鐘,其中順時(shí)針為正,逆時(shí)針為負(fù)。例如:當(dāng)前時(shí)鐘在3點(diǎn),要點(diǎn)到8點(diǎn)。可以順時(shí)針一可以逆時(shí)針。3+5=8,(3+12)-7=8;中的12溢出,在這之中相加互為12的稱之為“補(bǔ)數(shù)”。 計(jì)算機(jī)中的所有減法,乘法,除法都可有加法計(jì)算。 1-2=1+(-2),也就是相當(dāng)于1加上-2的補(bǔ)碼。 注意:一個(gè)8位的空間,如果用來(lái)表示無(wú)符號(hào)數(shù)0-255(0-2^8-1),如果表示有符號(hào)的數(shù):-128-127(-2^7-2^7-1)。
sizeof();
sizeof(char);//1字節(jié)
sizeof(short);//2字節(jié)
sizeof(int);//4字節(jié)
sizeof(long);//4字節(jié)
sizeof(long long);//8字節(jié)
1字節(jié) char
0 - 255 unsigned char(無(wú)符號(hào)) 0 -2^8-1
-128 - 127 signed char -2^7 -2^7-1
2字節(jié) short
0 - 65535 0 - 2^16-1
-32768 - 32767 -2^15 - 2^15-1
4字節(jié) int
0 - 2^32(40億)
-2^31 - 2^31-1
long(4個(gè)字節(jié))沒(méi)有擴(kuò)展,
long long(8個(gè)字節(jié))。
0 - 2^64
-2^62 - 2^63-1
int 基本整型 理想的32位機(jī),地址總線和數(shù)據(jù)總線都是32位的。
有效數(shù)字,從左至右不為0的數(shù)字。超出類型的限制之后的數(shù)字不保證正確。 float,doouble;
數(shù)據(jù)類型圖:
總結(jié)
以上是生活随笔為你收集整理的c或c++语言什么时候用补码来运算,C/C++(基础编码-补码详解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言程序设计江宝钏第九章,C语言程序设
- 下一篇: c6011取消对null指针的引用_C+