負(fù)數(shù)的源碼怎么計(jì)算 負(fù)數(shù)的原碼、反碼、補(bǔ)碼?
負(fù)數(shù)的原碼、反碼、補(bǔ)碼?以-3為例,[-3]原=10000011[-3]逆=11111100,除符號(hào)位外,原碼的每一位取逆[-3]補(bǔ)=11111101,逆碼的最后一位加上1-3減1的補(bǔ)碼得到11111
負(fù)數(shù)的原碼、反碼、補(bǔ)碼?
以-3為例,[-3]原=10000011[-3]逆=11111100,除符號(hào)位外,原碼的每一位取逆[-3]補(bǔ)=11111101,逆碼的最后一位加上1-3減1的補(bǔ)碼得到11111100,再取逆得到10000011為A1,A1為原碼- 3. -如果3的補(bǔ)碼取反得到10000010,1得到10000011,則A2是-3的原始代碼??傊?,負(fù)補(bǔ)碼減一得到原碼,負(fù)補(bǔ)碼加一得到原碼。
負(fù)數(shù)的補(bǔ)碼怎么變回原碼?
給定一個(gè)數(shù)字的補(bǔ)碼,有兩種操作可以找到原始代碼:(1)如果補(bǔ)碼的符號(hào)位為“0”,則表示它是正數(shù),因此補(bǔ)碼是該數(shù)字的原始代碼。(2) 如果補(bǔ)碼的符號(hào)位是“1”,則表示它是一個(gè)負(fù)數(shù)。查找原始代碼的操作可以是:符號(hào)位為1,其他位取反,然后整數(shù)加1。例如,如果已知補(bǔ)碼11111 001,則原始代碼為10000111(-7):因?yàn)榉?hào)位是“1”,這意味著它是一個(gè)負(fù)數(shù),所以該位保持不變,仍然是“1”;其他7位1111001在求反后是0000111;如果加1,則是10000111。擴(kuò)展數(shù)據(jù):摘要:如果一個(gè)數(shù)字的補(bǔ)碼已知,那么查找原始代碼的操作實(shí)際上是再次查找補(bǔ)碼。補(bǔ)碼轉(zhuǎn)換成原始碼:符號(hào)位保持不變,數(shù)值位逐位反轉(zhuǎn),最后一位加1。即補(bǔ)碼的補(bǔ)碼等于原碼。正整數(shù)的原碼、逆碼和補(bǔ)碼是一樣的,即當(dāng)你看到符號(hào)位(第一位)是0時(shí),你可以根據(jù)它來(lái)寫(xiě)另外兩個(gè)碼。所以如果我們知道一個(gè)正數(shù)的補(bǔ)碼,找到它的原始碼,這兩個(gè)數(shù)是一樣的。
負(fù)數(shù)的原碼,反碼,補(bǔ)碼,怎么求?
對(duì)于負(fù)整數(shù)-x,首先寫(xiě)入x的二進(jìn)制值,用0填充高位,然后填充8或16位。
重新寫(xiě)入[-x]原始=符號(hào)位更改為1,后續(xù)位不變
[-x]反轉(zhuǎn)=符號(hào)位為1,其余位=原始代碼,每個(gè)位都反轉(zhuǎn)(0,1交換)
[-x]補(bǔ)碼=[-x]逆1
我們可以通過(guò)原碼、逆碼和補(bǔ)碼的含義和關(guān)系來(lái)介紹三者之間的轉(zhuǎn)換關(guān)系:1。原始代碼是符號(hào)位的絕對(duì)值加上真值,即第一位表示符號(hào),其他位表示值。例如,如果它是8位二進(jìn)制文件:[1]original=00000001[-1]original=10000001,則第一位是符號(hào)位。2反正數(shù)的反碼是它自己的負(fù)數(shù)。逆碼基于其原始碼,符號(hào)位不變,其他位取反。[1] =[00000001]原=[00000001]逆[-1]=[10000001]原=[11111110]逆第一位是符號(hào)位。三。正補(bǔ)語(yǔ)的補(bǔ)語(yǔ)是負(fù)補(bǔ)語(yǔ)的補(bǔ)語(yǔ)。它基于其原始代碼,符號(hào)位保持不變,其他位取反。最后一個(gè)1。(即,基于逆碼,1)[1]=[00000001]原=[00000001]逆=[00000001]補(bǔ)[-1]=[10000001]原=[11111110]逆=[11111111]補(bǔ)第一符號(hào)位。注:補(bǔ)碼的補(bǔ)碼等于原碼。例如,如果-1的補(bǔ)碼是11111111,則11111111的逆碼是10000000,補(bǔ)碼是10000001(-1的原始代碼)。