| | wèi yùn suàn
zài hěn duō xì tǒng chéng xù zhōng cháng yào qiú zài wèi (bit) yī jí jìn xíng yùn suàn huò chǔlǐ。 C yǔ yán tí gōng liǎo wèi yùn suàn de gōng néng, zhè shǐ déC yǔ yán yě néng xiàng huì biān yǔ yán yī yàng yòng lái biān xiě xì tǒng chéng xù。
yī、 wèi yùn suàn fúC yǔ yán tí gōng liǎo liù zhǒng wèi yùn suàn fú:
& àn wèi yǔ
| àn wèi huò
^ àn wèi yì huò
~ qǔ fǎn
<< zuǒ yí
>> yòu yí
1. àn wèi yǔ yùn suàn 'àn wèi yǔ yùn suàn fú "&" shì shuāng mù yùn suàn fú。 qí gōng néng shì cānyù yùn suàn de liǎng shù gè duì yìng de 'èr jìn wèi xiāng yǔ。 zhǐ yòu duì yìng de liǎng gè 'èr jìn wèi jūn wéi 1 shí, jiēguǒ wèi cái wéi 1, fǒu zé wéi 0。 cānyù yùn suàn de shù yǐ bǔ mǎ fāng shì chū xiàn。
lì rú: 9&5 kě xiě suàn shì rú xià: 00001001(9 de 'èr jìn zhì bǔ mǎ )&00000101(5 de 'èr jìn zhì bǔ mǎ ) 00000001(1 de 'èr jìn zhì bǔ mǎ ) kě jiàn 9&5=1。
àn wèi yǔ yùn suàn tōng cháng yòng lái duì mǒu xiē wèi qīng 0 huò bǎo liú mǒu xiē wèi。 lì rú bǎ a de gāo bā wèi qīng 0, bǎo liú dī bā wèi, kě zuò a&255 yùn suàn (255 de 'èr jìn zhì shù wéi 0000000011111111)。
main(){
inta=9,b=5,c;
c=a&b;
printf("a=%d b=%d c=%d ",a,b,c);
}
2. àn wèi huò yùn suàn 'àn wèi huò yùn suàn fú “ | ” shì shuāng mù yùn suàn fú。 qí gōng néng shì cānyù yùn suàn de liǎng shù gè duì yìng de 'èr jìn wèi xiāng huò。 zhǐ yào duì yìng de 'èr gè 'èr jìn wèi yòu yī gè wéi 1 shí, jiēguǒ wèi jiù wéi 1。 cānyù yùn suàn de liǎng gè shù jūn yǐ bǔ mǎ chū xiàn。
lì rú: 9|5 kě xiě suàn shì rú xià: 00001001|00000101
00001101( shí jìn zhì wéi 13) kě jiàn 9|5=13
main(){
inta=9,b=5,c;
c=a|b;
printf("a=%d b=%d c=%d ",a,b,c);
}
3. àn wèi yì huò yùn suàn 'àn wèi yì huò yùn suàn fú“ ^” shì shuāng mù yùn suàn fú。 qí gōng néng shì cānyù yùn suàn de liǎng shù gè duì yìng de 'èr jìn wèi xiāng yì huò, dāng liǎng duì yìng de 'èr jìn wèi xiāng yì shí, jiēguǒ wéi 1。 cānyù yùn suàn shù réng yǐ bǔ mǎ chū xiàn, lì rú 9^5 kě xiě chéng suàn shì rú xià: 00001001^0000010100001100( shí jìn zhì wéi 12)
main(){
inta=9;
a=a^15;
printf("a=%d ",a);
}
4. qiú fǎn yùn suàn qiú fǎn yùn suàn fú ~ wéi dān mù yùn suàn fú, jù yòu yòu jié hé xìng。 qí gōng néng shì duì cānyù yùn suàn de shù de gè 'èr jìn wèi 'àn wèi qiú fǎn。 lì rú~ 9 de yùn suàn wéi: ~(0000000000001001) jiēguǒ wéi: 1111111111110110
5. zuǒ yí yùn suàn zuǒ yí yùn suàn fú“ <<” shì shuāng mù yùn suàn fú。 qí gōng néng bǎ“ <<” zuǒ biān de yùn suàn shù de gè 'èr jìn wèi quán bù zuǒ yí ruò gān wèi, yóu“ <<” yòu biān de shù zhǐ dìng yí dòng de wèi shù,
gāo wèi diū qì, dī wèi bǔ 0。 lì rú: a<<4 zhǐ bǎ a de gè 'èr jìn wèi xiàng zuǒ yí dòng 4 wèi。 rú a=00000011( shí jìn zhì 3), zuǒ yí 4 wèi hòu wéi 00110000( shí jìn zhì 48)。 6. yòu yí yùn suàn yòu yí yùn suàn fú“ >>” shì shuāng mù yùn suàn fú。 qí gōng néng shì bǎ“ >>” zuǒ biān de yùn suàn shù de gè 'èr jìn wèi quán bù yòu yí ruò gān wèi,“ >>” yòu biān de shù zhǐ dìng yí dòng de wèi shù。
lì rú: shè a=15, a>>2 biǎo shì bǎ 000001111 yòu yí wéi 00000011( shí jìn zhì 3)。 yīnggāi shuō míng de shì, duì yú yòu fú hào shù, zài yòu yí shí, fú hào wèi jiāng suí tóng yí dòng。 dāng wéi zhèng shù shí, zuì gāo wèi bǔ 0, ér wéi fù shù shí, fú hào wèi wéi 1, zuì gāo wèi shì bǔ 0 huò shì bǔ 1 qǔ jué yú biān yì xì tǒng de guī dìng。 turboc hé hěn duō xì tǒng guī dìng wéi bǔ 1。
main(){
unsigneda,b;
printf("inputanumber:");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d b=%d ",a,b);
}
qǐng zài kàn yī lì !
main(){
chara='a',b='b';
intp,c,d;
p=a;
p=(p<<8)|b;
d=p&0xff;
c=(p&0xff00)>>8;
printf("a=%d b=%d c=%d d=%d ",a,b,c,d);
}
wèi yù
yòu xiē xìn xī zài cún chǔ shí, bìng bù xū yào zhàn yòng yī gè wán zhěng de zì jié, ér zhǐ xū zhàn jǐ gè huò yī gè 'èr jìn zhì wèi。 lì rú zài cún fàng yī gè kāi guān liàng shí, zhǐ yòu 0 hé 1 liǎng zhǒng zhuàng tài, yòng yī wèi 'èr jìn wèi jí kě。 wèile jié shěng cún chǔ kōng jiān, bìng shǐ chǔlǐ jiǎn biàn,C yǔ yán yòu tí gōng liǎo yī zhǒng shù jù jié gòu, chēng wéi“ wèi yù” huò“ wèi duàn”。 suǒ wèi“ wèi yù” shì bǎ yī gè zì jié zhōng de 'èr jìn wèi huàfēn wéi jǐ gè bù tóng de qū yù, bìng shuō míng měi gè qū yù de wèi shù。 měi gè yù yòu yī gè yù míng, yǔn xǔ zài chéng xù zhōng 'àn yù míng jìn xíng cāo zuò。 zhè yàng jiù kě yǐ bǎ jǐ gè bù tóng de duì xiàng yòng yī gè zì jié de 'èr jìn zhì wèi yù lái biǎo shì。 yī、 wèi yù de dìng yì hé wèi yù biàn liàng de shuō míng wèi yù dìng yì yǔ jié gòu dìng yì xiāng fǎng, qí xíng shì wéi:
struct wèi yù jié gòu míng
{ wèi yù liè biǎo };
qí zhōng wèi yù liè biǎo de xíng shì wéi: lèi xíng shuō míng fú wèi yù míng: wèi yù cháng dù
lì rú:
structbs
{
inta:8;
intb:2;
intc:6;
};
wèi yù biàn liàng de shuō míng yǔ jié gòu biàn liàng shuō míng de fāng shì xiāng tóng。 kě cǎi yòng xiān dìng yì hòu shuō míng, tóng shí dìng yì shuō míng huò zhě zhí jiē shuō míng zhè sān zhǒng fāng shì。 lì rú:
structbs
{
inta:8;
intb:2;
intc:6;
}data;
shuō míng data wéi bs biàn liàng, gòng zhàn liǎng gè zì jié。 qí zhōng wèi yù a zhàn 8 wèi, wèi yù b zhàn 2 wèi, wèi yù c zhàn 6 wèi。 duì yú wèi yù de dìng yì shàng yòu yǐ xià jǐ diǎn shuō míng:
1. yī gè wèi yù bì xū cún chǔ zài tóng yī gè zì jié zhōng, bù néng kuà liǎng gè zì jié。 rú yī gè zì jié suǒ shèng kōng jiān bù gòu cún fàng lìng yī wèi yù shí, yìng cóng xià yī dān yuán qǐ cún fàng gāi wèi yù。 yě kě yǐ yòu yì shǐ mǒu wèi yù cóng xià yī dān yuán kāi shǐ。 lì rú:
structbs
{
unsigneda:4
unsigned:0/* kōng yù */
unsignedb:4/* cóng xià yī dān yuán kāi shǐ cún fàng */
unsignedc:4
}
zài zhè gè wèi yù dìng yì zhōng, a zhàn dì yī zì jié de 4 wèi, hòu 4 wèi tián 0 biǎo shì bù shǐ yòng, b cóng dì 'èr zì jié kāi shǐ, zhàn yòng 4 wèi, c zhàn yòng 4 wèi。
2. yóu yú wèi yù bù yǔn xǔ kuà liǎng gè zì jié, yīn cǐ wèi yù de cháng dù bù néng dà yú yī gè zì jié de cháng dù, yě jiù shì shuō bù néng chāo guò 8 wèi 'èr jìn wèi。
3. wèi yù kě yǐ wú wèi yù míng, zhè shí tā zhǐ yòng lái zuò tián chōng huò tiáozhěng wèi zhì。 wú míng de wèi yù shì bù néng shǐ yòng de。 lì rú:
structk
{
inta:1
int:2/* gāi 2 wèi bù néng shǐ yòng */
intb:3
intc:2
};
cóng yǐ shàng fēn xī kě yǐ kàn chū, wèi yù zài běn zhì shàng jiù shì yī zhǒng jié gòu lèi xíng, bù guò qí chéng yuán shì 'àn 'èr jìn wèi fēn pèi de。
èr、 wèi yù de shǐ yòng wèi yù de shǐ yòng hé jié gòu chéng yuán de shǐ yòng xiāng tóng, qí yī bān xíng shì wéi: wèi yù biàn liàng míng · wèi yù míng wèi yù yǔn xǔ yòng gè zhǒng gé shì shū chū。
main(){
structbs
{
unsigneda:1;
unsignedb:3;
unsignedc:4;
}bit,*pbit;
bit.a=1;
bit.b=7;
bit.c=15;
printf("%d,%d,%d ",bit.a,bit.b,bit.c);
pbit=&bit;
pbit->a=0;
pbit->b&=3;
pbit->c|=1;
printf("%d,%d,%d ",pbit->a,pbit->b,pbit->c);
}
shàng lì chéng xù zhōng dìng yì liǎo wèi yù jié gòu bs, sān gè wèi yù wéi a,b,c。 shuō míng liǎo bs lèi xíng de biàn liàng bit hé zhǐ xiàng bs lèi xíng de zhǐ zhēn biàn liàng pbit。 zhè biǎo shì wèi yù yě shì kě yǐ shǐ yòng zhǐ zhēn de。
chéng xù de 9、 10、 11 sān xíng fēn bié gěi sān gè wèi yù fù zhí。 ( yìng zhù yì fù zhí bù néng chāo guò gāi wèi yù de yǔn xǔ fàn wéi ) chéng xù dì 12 xíng yǐ zhěng xíng liàng gé shì shū chū sān gè yù de nèi róng。 dì 13 xíng bǎ wèi yù biàn liàng bit de dì zhǐ sòng gěi zhǐ zhēn biàn liàng pbit。 dì 14 xíng yòng zhǐ zhēn fāng shì gěi wèi yù a chóngxīn fù zhí, fù wéi 0。 dì 15 xíng shǐ yòng liǎo fù hé de wèi yùn suàn fú "&=", gāi xíng xiāng dāng yú: pbit->b=pbit->b&3 wèi yù b zhōng yuán yòu zhí wéi 7, yǔ 3 zuò 'àn wèi yǔ yùn suàn de jiēguǒ wéi 3(111&011=011, shí jìn zhì zhí wéi 3)。 tóng yàng, chéng xù dì 16 xíng zhōng shǐ yòng liǎo fù hé wèi yùn suàn "|=", xiāng dāng yú: pbit->c=pbit->c|1 qí jiēguǒ wéi 15。 chéng xù dì 17 xíng yòng zhǐ zhēn fāng shì shū chū liǎo zhè sān gè yù de zhí。
lèi xíng dìng yì fú t y p e de f
C yǔ yán bù jǐn tí gōng liǎo fēng fù de shù jù lèi xíng, ér qiě hái yǔn xǔ yóu yòng hù zì jǐ dìng yì lèi xíng shuō míng fú, yě jiù shì shuō yǔn xǔ yóu yòng hù wéi shù jù lèi xíng qǔ“ bié míng”。 lèi xíng dìng yì fú typedef jí kě yòng lái wán chéng cǐ gōng néng。 lì rú, yòu zhěng xíng liàng a,b, qí shuō míng rú xià: intaa,b; qí zhōng int shì zhěng xíng biàn liàng de lèi xíng shuō míng fú。 int de wán zhěng xiě fǎ wéi integer,
wèile zēng jiā chéng xù de kě dú xìng, kě bǎ zhěng xíng shuō míng fú yòng typedef dìng yì wéi: typedefintinteger zhè yǐ hòu jiù kě yòng integer lái dài tì int zuò zhěng xíng biàn liàng de lèi xíng shuō míng liǎo。 lì rú: integera,b; tā děng xiào yú: inta,b; yòng typedef dìng yì shù zǔ、 zhǐ zhēn、 jié gòu děng lèi xíng jiāng dài lái hěn dà de fāng biàn, bù jǐn shǐ chéng xù shū xiě jiǎn dān 'ér qiě shǐ yì yì gèng wéi míng què, yīn 'ér zēng qiáng liǎo kě dú xìng。 lì rú:
typedefcharname; biǎo shì name shì zì fú shù zǔ lèi xíng, shù zǔ cháng dù wéi 20。
rán hòu kě yòng name shuō míng biàn liàng, rú: namea1,a2,s1,s2; wán quán děng xiào yú: chara1,a2,s1,s2
yòu rú:
typedefstructstu{charname;
intage;
charsex;
}stu;
dìng yì stu biǎo shì stu de jié gòu lèi xíng, rán hòu kě yòng stu lái shuō míng jié gòu biàn liàng: stubody1,body2;
typedef dìng yì de yī bān xíng shì wéi: typedef yuán lèi xíng míng xīn lèi xíng míng qí zhōng yuán lèi xíng míng zhōng hán yòu dìng yì bù fēn, xīn lèi xíng míng yī bān yòng dà xiě biǎo shì, yǐ
biàn yú qū bié。 zài yòu shí yě kě yòng hóng dìng yì lái dài tì typedef de gōng néng, dàn shì hóng dìng yì shì yóu yù chǔlǐ wán chéng de, ér typedef zé shì zài biān yì shí wán chéng de, hòu zhě gèng wéi líng huó fāng biàn。 | | wèi yùn suàn jiǎn jiè jí shí yòng jì qiǎo( yī): jī chǔ piān
shénme shì wèi yùn suàn ?
chéng xù zhōng de suǒ yòu shù zài jì suàn jī nèi cún zhōng dū shì yǐ 'èr jìn zhì de xíng shì chǔ cún de。 wèi yùn suàn shuō chuān liǎo, jiù shì zhí jiē duì zhěng shù zài nèi cún zhōng de 'èr jìn zhì wèi jìn xíng cāo zuò。 bǐ rú, and yùn suàn běn lái shì yī gè luó ji yùn suàn fú, dàn zhěng shù yǔ zhěng shù zhī jiān yě kě yǐ jìn xíng and yùn suàn。 jǔ gè lì zǐ, 6 de 'èr jìn zhì shì 110, 11 de 'èr jìn zhì shì 1011, nà me 6and11 de jiēguǒ jiù shì 2, tā shì 'èr jìn zhì duì yìng wèi jìn xíng luó ji yùn suàn de jiēguǒ( 0 biǎo shì False, 1 biǎo shì True, kòngwèi dū dāng 0 chǔlǐ):
110
AND 1011
---------------
0010-->2
yóu yú wèi yùn suàn zhí jiē duì nèi cún shù jù jìn xíng cāo zuò, bù xū yào zhuǎn chéng shí jìn zhì, yīn cǐ chǔlǐ sù dù fēi cháng kuài。 dāng rán yòu rén huì shuō, zhè gè kuài liǎo yòu shénme yòng, jì suàn 6and11 méi yòu shénme shí jì yì yì 'ā。 zhè yī xì liè de wén zhāng jiù jiāng gào sù nǐ, wèi yùn suàn dào dǐ kě yǐ gànshénme, yòu xiē shénme jīng diǎn yìng yòng, yǐ jí rú hé yòng wèi yùn suàn yōu huà nǐ de chéng xù。
Pascal hé C zhōng de wèi yùn suàn fú hào
xià miàn de a hé b dōushì zhěng shù lèi xíng, zé:
C yǔ yán |Pascal yǔ yán
-------+-------------
a&b |aandb
a|b |aorb
a^b |axorb
~a |nota
a<<b|ashlb
a>>b|ashrb
zhù yì C zhōng de luó ji yùn suàn hé wèi yùn suàn fú hào shì bù tóng de。 520|1314=1834, dàn 520||1314=1, yīn wéi luó ji yùn suàn shí 520 hé 1314 dū xiāng dāng yú True。 tóng yàng de, !a hé ~a yě shì yòu qū bié de。
gè zhǒng wèi yùn suàn de shǐ yòng
===1.and yùn suàn ===
and yùn suàn tōng cháng yòng yú 'èr jìn zhì qǔ wèi cāo zuò, lì rú yī gè shù and1 de jiēguǒ jiù shì qǔ 'èr jìn zhì de zuì mò wèi。 zhè kě yǐ yòng lái pàn duàn yī gè zhěng shù de jī'ǒu, èr jìn zhì de zuì mò wèi wéi 0 biǎo shì gāi shù wéi 'ǒu shù, zuì mò wèi wéi 1 biǎo shì gāi shù wéi jīshù .
===2.or yùn suàn ===
or yùn suàn tōng cháng yòng yú 'èr jìn zhì tè dìng wèi shàng de wú tiáo jiàn fù zhí, lì rú yī gè shù or1 de jiēguǒ jiù shì bǎ 'èr jìn zhì zuì mò wèi qiáng xíng biàn chéng 1。 rú guǒ xū yào bǎ 'èr jìn zhì zuì mò wèi biàn chéng 0, duì zhè gè shù or1 zhī hòu zài jiǎn yī jiù kě yǐ liǎo, qí shí jì yì yì jiù shì bǎ zhè gè shù qiáng xíng biàn chéng zuì jiē jìn de 'ǒu shù。
===3.xor yùn suàn ===
xor yùn suàn tōng cháng yòng yú duì 'èr jìn zhì de tè dìng yī wèi jìn xíng qǔ fǎn cāo zuò, yīn wéi yì huò kě yǐ zhè yàng dìng yì: 0 hé 1 yì huò 0 dōubù biàn, yì huò 1 zé qǔ fǎn。
xor yùn suàn de nì yùn suàn shì tā běn shēn, yě jiù shì shuō liǎng cì yì huò tóng yī gè shù zuì hòu jiēguǒ bù biàn, jí (axorb)xorb=a。 xor yùn suàn kě yǐ yòng yú jiǎn dān de jiā mì, bǐ rú wǒ xiǎng duì wǒ MM shuō 1314520, dàn pà bié rén zhī dào, yú shì shuāng fāng yuē dìng ná wǒ de shēng rì 19880516 zuò wéi mì yào。 1314520xor19880516=20665500, wǒ jiù bǎ 20665500 gào sù MM。 MM zài cì jì suàn 20665500xor19880516 de zhí, dé dào 1314520, yú shì tā jiù míng bái liǎo wǒ de qǐ tú。
xià miàn wǒ men kàn lìng wài yī gè dōng xī。 dìng yì liǎng gè fú hào # hé @( wǒ zěn me zhǎo bù dào nà gè juàn lǐ yòu gè chā de zì fú), zhè liǎng gè fú hào hù wéi nì yùn suàn, yě jiù shì shuō (x#y)@y=x。 xiàn zài yǐ cì zhí xíng xià miàn sān tiáo mìng lìng, jiēguǒ shì shénme?
x<-x#y
y<-x@y
x<-x@y
zhí xíng liǎo dì yī jù hòu x biàn chéng liǎo x#y。 nà me dì 'èr jù shí zhì jiù shì y<-x#y@y, yóu yú # hé @ hù wéi nì yùn suàn, nà me cǐ shí de y biàn chéng liǎo yuán lái de x。 dì sān jù zhōng x shí jì shàng bèi fù zhí wéi (x#y)@x, rú guǒ # yùn suàn jù yòu jiāo huàn lǜ, nà me fù zhí hòu x jiù biàn chéng zuì chū de y liǎo。 zhè sān jù huà de jiēguǒ shì, x hé y de wèi zhì hù huàn liǎo。
jiā fǎ hé jiǎn fǎ hù wéi nì yùn suàn, bìng qiě jiā fǎ mǎn zú jiāo huàn lǜ。 bǎ # huàn chéng +, bǎ @ huàn chéng -, wǒ men kě yǐ xiě chū yī gè bù xū yào lín shí biàn liàng de swap guò chéng (Pascal)。
procedureswap(vara,b:longint);
begin
a:=a+b;
b:=a-b;
a:=a-b;
end;
hǎo liǎo, gāng cái bù shì shuō xor de nì yùn suàn shì tā běn shēn má? yú shì wǒ men jiù yòu liǎo yī gè kàn qǐ lái fēi cháng guǐ yì de swap guò chéng:
procedureswap(vara,b:longint);
begin
a:=axorb;
b:=axorb;
a:=axorb;
end;
===4.not yùn suàn ===
not yùn suàn de dìng yì shì bǎ nèi cún zhōng de 0 hé 1 quán bù qǔ fǎn。 shǐ yòng not yùn suàn shí yào gé wài xiǎo xīn, nǐ xū yào zhù yì zhěng shù lèi xíng yòu méi yòu fú hào。 rú guǒ not de duì xiàng shì wú fú hào zhěng shù( bù néng biǎo shì fù shù), nà me dé dào de zhí jiù shì tā yǔ gāi lèi xíng shàng jiè de chā, yīn wéi wú fú hào lèi xíng de shù shì yòng 00 dào $FFFF yǐ cì biǎo shì de。 xià miàn de liǎng gè chéng xù( jǐn yǔ yán bù tóng) jūn fǎn huí 65435。
var
a:word;
begin
a:=100;
a:=nota;
writeln(a);
end.
#include<stdio.h>
intmain()
{
unsignedshorta=100;
a=~a;
printf("%dn",a);
return0;
}
rú guǒ not de duì xiàng shì yòu fú hào de zhěng shù, qíng kuàng jiù bù yī yàng liǎo, shāo hòu wǒ men huì zài“ zhěng shù lèi xíng de chǔ cún” xiǎo jié zhōng tí dào。
===5.shl yùn suàn ===
ashlb jiù biǎo shì bǎ a zhuǎn wéi 'èr jìn zhì hòu zuǒ yí b wèi( zài hòu miàn tiān b gè 0)。 lì rú 100 de 'èr jìn zhì wéi 1100100, ér 110010000 zhuǎn chéng shí jìn zhì shì 400, nà me 100shl2=400。 kě yǐ kàn chū, ashlb de zhí shí jì shàng jiù shì a chéng yǐ 2 de b cì fāng, yīn wéi zài 'èr jìn zhì shù hòu tiān yī gè 0 jiù xiāng dāng yú gāi shù chéng yǐ 2。
tōng cháng rèn wéi ashl1 bǐ a*2 gèng kuài, yīn wéi qián zhě shì gèng dǐ céng yī xiē de cāo zuò。 yīn cǐ chéng xù zhōng chéng yǐ 2 de cāo zuò qǐng jìn liàng yòng zuǒ yí yī wèi lái dài tì。
dìng yì yī xiē cháng liàng kě néng huì yòng dào shl yùn suàn。 nǐ kě yǐ fāng biàn dì yòng 1shl16-1 lái biǎo shì 65535。 hěn duō suàn fǎ hé shù jù jié gòu yào qiú shù jù guī mó bì xū shì 2 de mì, cǐ shí kě yǐ yòng shl lái dìng yì Max_N děng cháng liàng。
===6.shr yùn suàn ===
hé shl xiāng sì, ashrb biǎo shì 'èr jìn zhì yòu yí b wèi( qù diào mò b wèi), xiāng dāng yú a chú yǐ 2 de b cì fāng( qǔ zhěng)。 wǒ men yě jīng cháng yòng shr1 lái dài tì div2, bǐ rú 'èr fēn chá zhǎo、 duī de chā rù cāo zuò děng děng。 xiǎng bàn fǎ yòng shr dài tì chú fǎ yùn suàn kě yǐ shǐ chéng xù xiàolǜ dà dà tí gāo。 zuì dà gōng yuē shù de 'èr jìn zhì suàn fǎ yòng chú yǐ 2 cāo zuò lái dài tì màn dé chū qí de mod yùn suàn, xiàolǜ kě yǐ tí gāo 60%。
wèi yùn suàn de jiǎn dān yìng yòng
yòu shí wǒ men de chéng xù xū yào yī gè guī mó bù dà de Hash biǎo lái jì lù zhuàng tài。 bǐ rú, zuò shù dú shí wǒ men xū yào 27 gè Hash biǎo lái tǒng jì měi yīháng、 měi yī liè hé měi yī gè xiǎo jiǔ gōng gé lǐ yǐ jīng yòu nǎ xiē shù liǎo。 cǐ shí, wǒ men kě yǐ yòng 27 gè xiǎo yú 2^9 de zhěng shù jìn xíng jì lù。 lì rú, yī gè zhǐ tián liǎo 2 hé 5 de xiǎo jiǔ gōng gé jiù yòng shù zì 18 biǎo shì( èr jìn zhì wéi 000010010), ér mǒu yīháng de zhuàng tài wéi 511 zé biǎo shì zhèyīháng yǐ jīng tián mǎn。 xū yào gǎi biàn zhuàng tài shí wǒ men bù xū yào bǎ zhè gè shù zhuǎn chéng 'èr jìn zhì xiū gǎi hòu zài zhuǎn huí qù, ér shì zhí jiē jìn xíng wèi cāo zuò。 zài sōu suǒ shí, bǎ zhuàng tài biǎo shì chéng zhěng shù kě yǐ gèng hǎo dì jìn xíng pàn zhòng děng cāo zuò。 zhè dào tí shì zài sōu suǒ zhōng shǐ yòng wèi yùn suàn jiā sù de jīng diǎn lì zǐ。 yǐ hòu wǒ men huì kàn dào gèng duō de lì zǐ。
xià miàn liè jǔ liǎo yī xiē cháng jiàn de 'èr jìn zhì wèi de biàn huàn cāo zuò。
gōng néng | shì lì | wèi yùn suàn
----------------------+---------------------------+--------------------
qù diào zuì hòu yī wèi |(101101->10110)|xshr1
zài zuì hòu jiā yī gè 0 |(101101->1011010)|xshl1
zài zuì hòu jiā yī gè 1 |(101101->1011011)|xshl1+1
bǎ zuì hòu yī wèi biàn chéng 1 |(101100->101101)|xor1
bǎ zuì hòu yī wèi biàn chéng 0 |(101101->101100)|xor1-1
zuì hòu yī wèi qǔ fǎn |(101101->101100)|xxor1
bǎ yòu shù dì k wèi biàn chéng 1|(101001->101101,k=3)|xor(1shl(k-1))
bǎ yòu shù dì k wèi biàn chéng 0|(101101->101001,k=3)|xandnot(1shl(k-1))
yòu shù dì k wèi qǔ fǎn |(101001->101101,k=3)|xxor(1shl(k-1))
qǔ mò sān wèi |(1101101->101)|xand7
qǔ mò k wèi |(1101101->1101,k=5)|xand(1shlk-1)
qǔ yòu shù dì k wèi |(1101101->1,k=4)|xshr(k-1)and1
bǎ mò k wèi biàn chéng 1 |(101001->101111,k=4)|xor(1shlk-1)
mò k wèi qǔ fǎn |(101001->100110,k=4)|xxor(1shlk-1)
bǎ yòu biān lián xù de 1 biàn chéng 0|(100101111->100100000)|xand(x+1)
bǎ yòu qǐ dì yī gè 0 biàn chéng 1|(100101111->100111111)|xor(x+1)
bǎ yòu biān lián xù de 0 biàn chéng 1|(11011000->11011111)|xor(x-1)
qǔ yòu biān lián xù de 1|(100101111->1111)|(xxor(x+1))shr1
qù diào yòu qǐ dì yī gè 1 de zuǒ biān |(100101000->1000)|xand(xxor(x-1))
zuì hòu zhè yī gè zài shù zhuàng shù zǔ zhōng huì yòng dào。
Pascal hé C zhōng de 16 jìn zhì biǎo shì
Pascal zhōng xū yào zài 16 jìn zhì shù qián jiā $ fú hào biǎo shì, C zhōng xū yào zài qián miàn jiā 0x lái biǎo shì。 zhè gè yǐ hòu wǒ men huì jīng cháng yòng dào。
zhěng shù lèi xíng de chǔ cún
wǒ men qián miàn suǒ shuō de wèi yùn suàn dōuméi yòu shè jí fù shù, dū jiǎ shè zhè xiē yùn suàn shì zài unsigned/word lèi xíng( zhǐ néng biǎo shì zhèng shù de zhěng xíng) shàng jìn xíng cāo zuò。 dàn jì suàn jī rú hé chǔlǐ yòu zhèng fù fú hào de zhěng shù lèi xíng ní? xià miàn liǎng gè chéng xù dōushì kǎo chá 16 wèi zhěng shù de chǔ cún fāng shì( zhǐ shì yǔ yán bù tóng)。
var
a,b:integer;
begin
a:=00;
b:=01;
write(a,'',b,'');
a:=$FFFE;
b:=$FFFF;
write(a,'',b,'');
a:=FFF;
b:=00;
writeln(a,'',b);
end.
#include<stdio.h>
intmain()
{
shortinta,b;
a=0x0000;
b=0x0001;
printf("%d%d",a,b);
a=0xFFFE;
b=0xFFFF;
printf("%d%d",a,b);
a=0x7FFF;
b=0x8000;
printf("%d%dn",a,b);
return0;
}
liǎng gè chéng xù de shū chū jūn wéi 01-2-132767-32768。 qí zhōng qián liǎng gè shù shì nèi cún zhí zuì xiǎo de shí hòu, zhōng jiān liǎng gè shù zé shì nèi cún zhí zuì dà de shí hòu, zuì hòu shū chū de liǎng gè shù shì zhèng shù yǔ fù shù de fēn jiè chù。 yóu cǐ nǐ kě yǐ qīng chǔ dì kàn dào jì suàn jī shì rú hé chǔ cún yī gè zhěng shù de: jì suàn jī yòng 00 dào FFF yǐ cì biǎo shì 0 dào 32767 de shù, shèng xià de 00 dào $FFFF yǐ cì biǎo shì -32768 dào -1 de shù。 32 wèi yòu fú hào zhěng shù de chǔ cún fāng shì yě shì lèi sì de。 shāo jiā zhù yì nǐ huì fā xiàn, èr jìn zhì de dì yī wèi shì yòng lái biǎo shì zhèng fù hào de, 0 biǎo shì zhèng, 1 biǎo shì fù。 zhè lǐ yòu yī gè wèn tí: 0 běn lái jì bù shì zhèng shù, yě bù shì fù shù, dàn tā zhàn yòng liǎo 00 de wèi zhì, yīn cǐ yòu fú hào de zhěng shù lèi xíng fàn wéi zhōng zhèng shù gè shù bǐ fù shù shǎo yī gè。 duì yī gè yòu fú hào de shù jìn xíng not yùn suàn hòu, zuì gāo wèi de biàn huà jiāng dǎo zhì zhèng fù diān dǎo, bìng qiě shù de jué duì zhí huì chā 1。 yě jiù shì shuō, nota shí jì shàng děng yú -a-1。 zhè zhǒng zhěng shù chǔ cún fāng shì jiào zuò“ bǔ mǎ”。
wèi yùn suàn jiǎn jiè jí shí yòng jì qiǎo( èr): jìn jiē piān (1)
===== zhēn zhèng qiáng de dōng xī lái liǎo! =====
èr jìn zhì zhōng de 1 yòu qí shù gè hái shì 'ǒu shù gè
wǒ men kě yǐ yòng xià miàn de dài mǎ lái jì suàn yī gè 32 wèi zhěng shù de 'èr jìn zhì zhōng 1 de gè shù de jī'ǒu xìng, dāng shū rù shù jù de 'èr jìn zhì biǎo shì lǐ yòu 'ǒu shù gè shù zì 1 shí chéng xù shū chū 0, yòu qí shù gè zé shū chū 1。 lì rú, 1314520 de 'èr jìn zhì 101000000111011011000 zhōng yòu 9 gè 1, zé x=1314520 shí chéng xù shū chū 1。
var
i,x,c:longint;
begin
readln(x);
c:=0;
fori:=1to32do
begin
c:=c+xand1;
x:=xshr1;
end;
writeln(cand1);
end.
dàn zhè yàng de xiàolǜ bìng bù gāo, wèi yùn suàn de shén qí zhī chù hái méi yòu tǐ xiàn chū lái。
tóng yàng shì pàn duàn 'èr jìn zhì zhōng 1 de gè shù de jī'ǒu xìng, xià miàn zhè duàn dài mǎ jiù qiáng liǎo。 nǐ néng kàn chū zhè gè dài mǎ de yuán lǐ má?
var
x:longint;
begin
readln(x);
x:=xxor(xshr1);
x:=xxor(xshr2);
x:=xxor(xshr4);
x:=xxor(xshr8);
x:=xxor(xshr16);
writeln(xand1);
end.
wèile shuō míng shàng miàn zhè duàn dài mǎ de yuán lǐ, wǒ men hái shì ná 1314520 chū lái shuō shì。 1314520 de 'èr jìn zhì wéi 101000000111011011000, dì yī cì yì huò cāo zuò de jiēguǒ rú xià:
00000000000101000000111011011000
XOR0000000000010100000011101101100
---------------------------------------
00000000000111100000100110110100
dé dào de jiēguǒ shì yī gè xīn de 'èr jìn zhì shù, qí zhōng yòu qǐ dì i wèi shàng de shù biǎo shì yuán shù zhōng dì i hé i+1 wèi shàng yòu jīshù gè 1 hái shì 'ǒu shù gè 1。 bǐ rú, zuì yòu biān nà gè 0 biǎo shì yuán shù mò liǎng wèi yòu 'ǒu shù gè 1, yòu qǐ dì 3 wèi shàng de 1 jiù biǎo shì yuán shù de zhè gè wèi zhì hé qián yī gè wèi zhì zhōng yòu jīshù gè 1。 duì zhè gè shù jìn xíng dì 'èr cì yì huò de jiēguǒ rú xià:
00000000000111100000100110110100
XOR000000000001111000001001101101
---------------------------------------
00000000000110011000101111011001
jiēguǒ lǐ de měi gè 1 biǎo shì yuán shù de gāi wèi zhì jí qí qián miàn sān gè wèi zhì zhōng gòng yòu jīshù gè 1, měi gè 0 jiù biǎo shì yuán shù duì yìng de sì gè wèi zhì shàng gòng 'ǒu shù gè 1。 yī zhí zuò dào dì wǔ cì yì huò jié shù hòu, dé dào de 'èr jìn zhì shù de zuì mò wèi jiù biǎo shì zhěng gè 32 wèi shù lǐ yòu duō shǎo gè 1, zhè jiù shì wǒ men zuì zhōng xiǎng yào de dá 'àn。
jì suàn 'èr jìn zhì zhōng de 1 de gè shù
tóng yàng jiǎ shè x shì yī gè 32 wèi zhěng shù。 jīng guò xià miàn wǔ cì fù zhí hòu, x de zhí jiù shì yuán shù de 'èr jìn zhì biǎo shì zhōng shù zì 1 de gè shù。 bǐ rú, chū shǐ shí x wéi 1314520( wǎng yǒu zhuā kuáng: néng bù néng huàn yī gè shù 'ā), nà me zuì hòu x jiù biàn chéng liǎo 9, tā biǎo shì 1314520 de 'èr jìn zhì zhōng yòu 9 gè 1。
x:=(xand555555)+((xshr1)and555555);
x:=(xand333333)+((xshr2)and333333);
x:=(xandF0F0F0F)+((xshr4)andF0F0F0F);
x:=(xandFF00FF)+((xshr8)andFF00FF);
x:=(xand00FFFF)+((xshr16)and00FFFF);
wèile biàn yú jiě shuō, wǒ men xià miàn jǐn shuō míng zhè gè chéng xù shì rú hé duì yī gè 8 wèi zhěng shù jìn xíng chǔlǐ de。 wǒ men ná shù zì 211( wǒ men bān mǒu MM de shēng rì) lái kāi dāo。 211 de 'èr jìn zhì wéi 11010011。
+---+---+---+---+---+---+---+---+
|1|1|0|1|0|0|1|1|<--- yuán shù
+---+---+---+---+---+---+---+---+
|10|01|00|10|<--- dì yī cì yùn suàn hòu
+-------+-------+-------+-------+
|0011|0010|<--- dì 'èr cì yùn suàn hòu
+---------------+---------------+
|00000101|<--- dì sān cì yùn suàn hòu, dé shù wéi 5
+-------------------------------+
zhěng gè chéng xù shì yī gè fēn zhì de sī xiǎng。 dì yī cì wǒ men bǎ měi xiāng lín de liǎng wèi jiā qǐ lái, dé dào měi liǎng wèi lǐ 1 de gè shù, bǐ rú qián liǎng wèi 10 jiù biǎo shì yuán shù de qián liǎng wèi yòu 2 gè 1。 dì 'èr cì wǒ men jì xù liǎng liǎng xiāng jiā, 10+01=11, 00+10=10, dé dào de jiēguǒ shì 00110010, tā biǎo shì yuán shù qián 4 wèi yòu 3 gè 1, mò 4 wèi yòu 2 gè 1。 zuì hòu yī cì wǒ men bǎ 0011 hé 0010 jiā qǐ lái, dé dào de jiù shì zhěng gè 'èr jìn zhì zhōng 1 de gè shù。 chéng xù zhōng qiǎo miào dì shǐ yòng qǔ wèi hé yòu yí, bǐ rú dì 'èr xíng zhōng 333333 de 'èr jìn zhì wéi 00110011001100...., yòng tā hé x zuò and yùn suàn jiù xiāng dāng yú yǐ 2 wéi dān wèi jiàngé qǔ shù。 shr de zuò yòng jiù shì ràng jiā fǎ yùn suàn de xiāng tóng shù wèi duì qí。
èr fēn chá zhǎo 32 wèi zhěng shù de qián dǎo 0 gè shù
zhè lǐ yòng de C yǔ yán, wǒ zhí jiē Copy de Hacker'sDelight shàng de dài mǎ。 zhè duàn dài mǎ xiě chéng C yào hǎo kàn xiē, xiě chéng Pascal de huà huì chū xiàn hěn duō begin hé end, gǎo dé dài mǎ hěn nán kàn。 chéng xù sī xiǎng shì 'èr fēn chá zhǎo, yīnggāi hěn jiǎn dān, wǒ jiù bù xì shuō liǎo。
intnlz(unsignedx)
{
intn;
if(x==0)return(32);
n=1;
if((x>>16)==0){n=n+16;x=x<<16;}
if((x>>24)==0){n=n+8;x=x<<8;}
if((x>>28)==0){n=n+4;x=x<<4;}
if((x>>30)==0){n=n+2;x=x<<2;}
n=n-(x>>31);
returnn;
}
zhǐ yòng wèi yùn suàn lái qǔ jué duì zhí
zhè shì yī gè fēi cháng yòu qù de wèn tí。 dà jiā xiān zì jǐ xiǎng xiǎng bā, Ctrl+A xiǎn shì dá 'àn。
dá 'àn: jiǎ shè x wéi 32 wèi zhěng shù, zé xxor(not(xshr31)+1)+xshr31 de jiēguǒ shì x de jué duì zhí
xshr31 shì 'èr jìn zhì de zuì gāo wèi, tā yòng lái biǎo shì x de fú hào。 rú guǒ tā wéi 0( x wéi zhèng), zé not(xshr31)+1 děng yú 000000, yì huò rèn hé shù jiēguǒ dōubù biàn; rú guǒ zuì gāo wèi wéi 1( x wéi fù), zé not(xshr31)+1 děng yú $FFFFFFFF, x yì huò tā xiāng dāng yú suǒ yòu shù wèi qǔ fǎn, yì huò wán hòu zài jiā yī。
gāo dī wèi jiāo huàn
zhè gè tí shí jì shàng shì wǒ chū de, zuò wéi xué xiào nèi bù NOIp mó nǐ sài de dì yī tí。 tí mù shì zhè yàng:
gěi chū yī gè xiǎo yú 2^32 de zhèng zhěng shù。 zhè gè shù kě yǐ yòng yī gè 32 wèi de 'èr jìn zhì shù biǎo shì( bù zú 32 wèi yòng 0 bǔ zú)。 wǒ men chēng zhè gè 'èr jìn zhì shù de qián 16 wèi wéi“ gāo wèi”, hòu 16 wèi wéi“ dī wèi”。 jiāng tā de gāo dī wèi jiāo huàn, wǒ men kě yǐ dé dào yī gè xīn de shù。 shì wèn zhè gè xīn de shù shì duō shǎo( yòng shí jìn zhì biǎo shì)。
lì rú, shù 1314520 yòng 'èr jìn zhì biǎo shì wéi 00000000000101000000111011011000( tiān jiā liǎo 11 gè qián dǎo 0 bǔ zú wéi 32 wèi), qí zhōng qián 16 wèi wéi gāo wèi, jí 0000000000010100; hòu 16 wèi wéi dī wèi, jí 0000111011011000。 jiāng tā de gāo dī wèi jìn xíng jiāo huàn, wǒ men dé dào liǎo yī gè xīn de 'èr jìn zhì shù 00001110110110000000000000010100。 tā jí shì shí jìn zhì de 249036820。
dāng shí jīhū méi yòu rén xiǎng dào yòng yī jù wèi cāo zuò lái dài tì rǒng cháng de chéng xù。 shǐ yòng wèi yùn suàn de huà liǎng jù huà jiù wán liǎo。
var
n:dword;
begin
readln(n);
writeln((nshr16)or(nshl16));
end.
ér shì shí shàng, Pascal yòu yī gè xì tǒng hán shù swap zhí jiē jiù kě yǐ yòng。
èr jìn zhì nì xù
xià miàn de chéng xù dú rù yī gè 32 wèi zhěng shù bìng shū chū tā de 'èr jìn zhì dǎo xù hòu suǒ biǎo shì de shù。
shū rù: 1314520( èr jìn zhì wéi 00000000000101000000111011011000)
shū chū: 460335104( èr jìn zhì wéi 00011011011100000010100000000000)
var
x:dword;
begin
readln(x);
x:=(xand555555)shl1or(xand$AAAAAAAA)shr1;
x:=(xand333333)shl2or(xand$CCCCCCCC)shr2;
x:=(xandF0F0F0F)shl4or(xand$F0F0F0F0)shr4;
x:=(xandFF00FF)shl8or(xand$FF00FF00)shr8;
x:=(xand00FFFF)shl16or(xand$FFFF0000)shr16;
writeln(x);
end.
tā de yuán lǐ hé gāng cái qiú 'èr jìn zhì zhōng 1 de gè shù nà gè lì tí shì dà zhì xiāng tóng de。 chéng xù shǒu xiān jiāo huàn měi xiāng lín liǎng wèi shàng de shù, yǐ hòu bǎ hù xiāng jiāo huàn guò de shù kàn chéng yī gè zhěng tǐ, jì xù jìn xíng yǐ 2 wèi wéi dān wèi、 yǐ 4 wèi wéi dān wèi de zuǒ yòu duì huàn cāo zuò。 wǒ men zài cì yòng 8 wèi zhěng shù 211 lái yǎn shì chéng xù zhí xíng guò chéng:
+---+---+---+---+---+---+---+---+
|1|1|0|1|0|0|1|1|<--- yuán shù
+---+---+---+---+---+---+---+---+
|11|10|00|11|<--- dì yī cì yùn suàn hòu
+-------+-------+-------+-------+
|1011|1100|<--- dì 'èr cì yùn suàn hòu
+---------------+---------------+
|11001011|<--- dì sān cì yùn suàn hòu
+-------------------------------+
wèi yùn suàn jiǎn jiè jí shí yòng jì qiǎo( sān): jìn jiē piān (2)
jīn tiān wǒ men lái kàn liǎng gè shāo wēi fù zá yī diǎn de lì zǐ。
n huáng hòu wèn tí wèi yùn suàn bǎn
n huáng hòu wèn tí shì shá wǒ jiù bù shuō liǎo bā, xué biān chéng de kěn dìng dū jiàn guò。 xià miàn de shí duō xíng dài mǎ shì n huáng hòu wèn tí de yī gè gāo xiào wèi yùn suàn chéng xù, kàn dào guò de réndōu kuā tā niú。 chū shǐ shí, upperlim:=(1shln)-1。 zhù chéng xù diào yòng test(0,0,0) hòu sum de zhí jiù shì n huáng hòu zǒng de xièshù。 ná zhè gè qù jiāo USACO, 0.3s, bào shuǎng。
proceduretest(row,ld,rd:longint);
var
pos,p:longint;
begin
ifrow<>upperlimthen
begin
pos:=upperlimandnot(roworldorrd);
whilepos<>0do
begin
p:=posand-pos;
pos:=pos-p;
test(row+p,(ld+p)shl1,(rd+p)shr1);
end;
end
elseinc(sum);
end;
zhà yī kàn sì hū wán quán mō bù zhe tóu nǎo, shí jì shàng zhěng gè chéng xù shì fēi cháng róng yì lǐ jiě de。 zhè lǐ hái shì jiàn yì dà jiā zì jǐ dān bù yùn xíng yī tàn jiū jìng, shí zài méi yán jiū chū lái zài kàn xià miàn de jiě shuō。
hé pǔ tōng suàn fǎ yī yàng, zhè shì yī gè dì guī guò chéng, chéng xù yīháng yī xíng dì xún zhǎo kě yǐ fàng huáng hòu de dì fāng。 guò chéng dài sān gè cān shù, row、 ld hé rd, fēn bié biǎo shì zài zòng liè hé liǎng gè duì jiǎo xiàn fāng xiàng de xiàn zhì tiáo jiàn xià zhèyīháng de nǎ xiē dì fāng bù néng fàng。 wǒ men yǐ 6x6 de qí pán wéi lì, kàn kàn chéng xù shì zěn me gōng zuò de。 jiǎ shè xiàn zài yǐ jīng dì guī dào dì sì céng, qián sān céng fàng de zǐ yǐ jīng biāo zài zuǒ tú shàng liǎo。 hóng sè、 lán sè hé lǜ sè de xiàn fēn bié biǎo shì sān gè fāng xiàng shàng yòu chōng tū de wèi zhì, wèi yú gāi xíng shàng de chōng tū wèi zhì jiù yòng row、 ld hé rd zhōng de 1 lái biǎo shì。 bǎ tā men sān gè bìng qǐ lái, dé dào gāi xíng suǒ yòu de jìn wèi, qǔ fǎn hòu jiù dé dào suǒ yòu kě yǐ fàng de wèi zhì( yòng pos lái biǎo shì)。 qián miàn shuō guò -a xiāng dāng yú nota+1, zhè lǐ de dài mǎ dì 6 xíng jiù xiāng dāng yú posand(notpos+1), qí jiēguǒ shì qǔ chū zuì yòu biān de nà gè 1。 zhè yàng, p jiù biǎo shì gāi xíng de mǒu gè kě yǐ fàng zǐ de wèi zhì, bǎ tā cóng pos zhōng yí chú bìng dì guī diào yòng test guò chéng。 zhù yì dì guī diào yòng shí sān gè cān shù de biàn huà, měi gè cān shù dū jiā shàng liǎo yī gè jìn wèi, dàn liǎng gè duì jiǎo xiàn fāng xiàng de jìn wèi duì xià yīháng de yǐng xiǎng xū yào píng yí yī wèi。 zuì hòu, rú guǒ dì guī dào mǒu gè shí hòu fā xiàn row=111111 liǎo, shuō míng liù gè huáng hòu quán fàng jìn qù liǎo, cǐ shí chéng xù cóng dì 1 xíng tiào dào dì 11 xíng, zhǎo dào de jiě de gè shù jiā yī。
~~~~====~~~~===== huá lì de fēn gē xiàn =====~~~~====~~~~
Gray mǎ
jiǎ rú wǒ yòu 4 gè qián zài de GF, wǒ xū yào jué dìng zuì zhōng dào dǐ hé shuí zài yī qǐ。 yī gè jiǎn dān de bàn fǎ jiù shì, yǐ cì hé měi gè MM jiāo wǎng yī duàn shí jiān, zuì hòu xuǎn zé gěi wǒ dài lái de“ mǎn yì dù” zuì dà de MM。 dàn kàn liǎo dd niú de lǐ lùn hòu, shì qíng kāi shǐ biàn dé fù zá liǎo: wǒ kě yǐ xuǎn zé hé duō gè MM zài yī qǐ。 zhè yàng, xū yào kǎo hé de zhuàng tài biàn chéng liǎo 2^4=16 zhǒng( dāng rán bāo kuò 0000 zhè yī zhuàng tài, yīn wéi wǒ yòu kě néng shì bō lí)。 xiàn zài de wèn tí jiù shì, wǒ yīnggāi yòng shénme shùn xù lái biàn lì zhè 16 zhǒng zhuàng tài ní?
chuán tǒng de zuò fǎ shì, yòng 'èr jìn zhì shù de shùn xù lái biàn lì suǒ yòu kě néng de zǔ hé。 yě jiù shì shuō, wǒ xū yào yǐ 0000->0001->0010->0011->0100->...->1111 zhè yàng de shùn xù duì měi zhǒng zhuàng tài jìn xíng cè shì。 zhè gè shùn xù hěn bù kē xué, hěn duō shí hòu zhuàng tài de zhuǎn yí dōuhěn hào shí。 bǐ rú cóng 0111 dào 1000 shí wǒ xū yào zàn shí shuǎi diào dāng qián suǒ yòu de 3 gè MM, rán hòu qù bǎ dì 4 gè MM。 tóng shí gǎi biàn suǒ yòu MM yǔ wǒ de guān xì shì yī jiàn hé děng jù dà de gōng chéng 'ā。 yīn cǐ, wǒ xī wàng zhī dào, shì fǒu yòu yī zhǒng fāng fǎ kě yǐ shǐ dé, cóng méi yòu MM zhè yī zhuàng tài chū fā, měi cì zhǐ gǎi biàn wǒ hé yī gè MM de guān xì( zhuī huò zhě shuǎi), 15 cì cāo zuò hòu qià hǎo biàn lì wán suǒ yòu kě néng de zǔ hé( zuì zhōng zhuàng tài bù yī dìng shì 1111)。 dà jiā zì jǐ xiān shì yī shì kàn xíng bù xíng。
jiě jué zhè gè wèn tí de fāng fǎ hěn qiǎo miào。 wǒ men lái shuō míng, jiǎ rú wǒ men yǐ jīng zhī dào liǎo n=2 shí de hé fǎ biàn lì shùn xù, wǒ men rú hé dé dào n=3 de biàn lì shùn xù。 xiǎn rán, n=2 de biàn lì shùn xù rú xià:
00
01
11
10
nǐ kě néng yǐ jīng xiǎng dào liǎo rú hé bǎ shàng miàn de biàn lì shùn xù kuò zhǎn dào n=3 de qíng kuàng。 n=3 shí yī gòng yòu 8 zhǒng zhuàng tài, qí zhōng qián miàn 4 gè bǎ n=2 de biàn lì shùn xù zhào bān xià lái, rán hòu bǎ tā men duìchèn fān zhé xià qù bìng zài zuì qián miàn jiā shàng 1 zuò wéi hòu miàn 4 gè zhuàng tài:
000
001
011
010 ↑
--------
110 ↓
111
101
100
yòng zhè zhǒng fāng fǎ dé dào de biàn lì shùn xù xiǎn rán fú hé yào qiú。 shǒu xiān, shàng miàn 8 gè zhuàng tài qià hǎo shì n=3 shí de suǒ yòu 8 zhǒng zǔ hé, yīn wéi tā men shì zài n=2 de quán bù sì zhǒng zǔ hé de jī chǔ shàng kǎo lǜ xuǎn bù xuǎn dì 3 gè yuán sù suǒ dé dào de。 rán hòu wǒ men kàn dào, hòu miàn yī bàn de zhuàng tài yīnggāi hé qián miàn yī bàn yī yàng mǎn zú“ xiāng lín zhuàng tài jiān jǐn yī wèi bù tóng” de xiàn zhì, ér“ jìng miàn” chù zé shì zuì qián miàn nà yī wèi shǔbù tóng。 zài cì fān zhé sān jiē biàn lì shùn xù, wǒ men jiù dé dào liǎo gāng cái de wèn tí de dá 'àn:
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
zhè zhǒng biàn lì shùn xù zuò wéi yī zhǒng biān mǎ fāng shì cún zài, jiào zuò Gray mǎ( xiě gè zhōng wén ràng zhī zhū lái zhuā: gé léi mǎ)。 tā de yìng yòng fàn wéi hěn guǎng。 bǐ rú, n jiē de Gray mǎ xiāng dāng yú zài n wéi lì fāng tǐ shàng de Hamilton huí lù, yīn wéi yán zhe lì fāng tǐ shàng de biān zǒu yī bù, n wéi zuò biāo zhōng zhǐ huì yòu yī gè zhí gǎi biàn。 zài bǐ rú, Gray mǎ hé Hanoi tǎ wèn tí děng jià。 Gray mǎ gǎi biàn de shì dì jǐ gè shù, Hanoi tǎ jiù gāi yí dòng nǎ gè pán zǐ。 bǐ rú, 3 jiē de Gray mǎ měi cì gǎi biàn de yuán sù suǒ zài wèi zhì yǐ cì wéi 1-2-1-3-1-2-1, zhè zhèng hǎo shì 3 jiē Hanoi tǎ měi cì yí dòng pán zǐ biān hào。 rú guǒ wǒ men kě yǐ kuài sù qiú chū Gray mǎ de dì n gè shù shì duō shǎo, wǒ men jiù kě yǐ shū chū rèn yì bù shù hòu Hanoi tǎ de yí dòng bù zhòu。 xiàn zài wǒ gào sù nǐ, Gray mǎ de dì n gè shù( cóng 0 suàn qǐ) shì nxor(nshr1), nǐ néng xiǎng chū lái zhè shì wèishénme má? xiān zì jǐ xiǎng xiǎng bā。
xià miàn wǒ men bǎ 'èr jìn zhì shù hé Gray mǎ dū xiě zài xià miàn, kě yǐ kàn dào zuǒ biān de shù yì huò zì shēn yòu yí de jiēguǒ jiù děng yú yòu biān de shù。
èr jìn zhì shù Gray mǎ
000000
001001
010011
011010
100110
101111
110101
111100
cóng 'èr jìn zhì shù de jiǎo dù kàn,“ jìng xiàng” wèi zhì shàng de shù jí shì duì yuán shù jìn xíng not yùn suàn hòu de jiēguǒ。 bǐ rú, dì 3 gè shù 010 hé dàoshǔ dì 3 gè shù 101 de měi yī wèi dū zhèng hǎo xiāng fǎn。 jiǎ shè zhè liǎng gè shù fēn bié wéi x hé y, nà me xxor(xshr1) hé yxor(yshr1) de jiēguǒ zhǐ yòu yī diǎn bù tóng: hòu zhě de shǒu wèi shì 1, qián zhě de shǒu wèi shì 0。 ér zhè zhèng hǎo shì Gray mǎ de shēng chéng fāng fǎ。 zhè jiù shuō míng liǎo, Gray mǎ de dì n gè shù què shí shì nxor(nshr1)。
jīn nián sì yuè fèn mashuo gěi wǒ kàn liǎo zhè dào tí, shì 'èr wéi yì yì shàng de Gray mǎ。 tí mù dà yì shì shuō, bǎ 0 dào 2^(n+m)-1 de shù xiě chéng 2^n*2^m de jǔ zhèn, shǐ dé wèi zhì xiāng lín liǎng shù de 'èr jìn zhì biǎo shì zhǐ yòu yī wèi zhī chā。 dá 'àn qí shí hěn jiǎn dān, suǒ yòu shù dōushì yóu m wèi de Gray mǎ hé n wèi Gray mǎ pīn jiē 'ér chéng, xū yào yòng zuǒ yí cāo zuò hé or yùn suàn wán chéng。 wán zhěng de dài mǎ rú xià:
var
x,y,m,n,u:longint;
begin
readln(m,n);
forx:=0to1shlm-1dobegin
u:=(xxor(xshr1))shln;// shū chū shù de zuǒ biān shì yī gè m wèi de Gray mǎ
fory:=0to1shln-1do
write(uor(yxor(yshr1)),'');// bìng shàng yī gè n wèi Gray mǎ
writeln;
end;
end.
wèi yùn suàn jiǎn jiè jí shí yòng jì qiǎo( sì): shí zhàn piān
<BLOCKQUOTE>Problem: fèi jiě de kāi guān
06 nián NOIp mó nǐ sài( yī) byMatrix67 dì sì tí
wèn tí miáo shù
nǐ wán guò“ lā dēng” yóu xì má? 25 zhǎn dēng pái chéng yī gè 5x5 de fāng xíng。 měi yī gè dēng dū yòu yī gè kāi guān, yóu xì zhě kě yǐ gǎi biàn tā de zhuàng tài。 měi yī bù, yóu xì zhě kě yǐ gǎi biàn mǒu yī gè dēng de zhuàng tài。 yóu xì zhě gǎi biàn yī gè dēng de zhuàng tài huì chǎn shēng lián suǒ fǎn yìng: hé zhè gè dēng shàng xià zuǒ yòu xiāng lín de dēng yě yào xiāng yìng dì gǎi biàn qí zhuàng tài。
wǒ men yòng shù zì“ 1” biǎo shì yī zhǎn kāi zhe de dēng, yòng shù zì“ 0” biǎo shì guān zhe de dēng。 xià miàn zhè zhǒng zhuàng tài
10111
01101
10111
10000
11011
zài gǎi biàn liǎo zuì zuǒ shàng jiǎo de dēng de zhuàng tài hòu jiāng biàn chéng:
01111
11101
10111
10000
11011
zài gǎi biàn tā zhèng zhōng jiān de dēng hòu zhuàng tài jiāng biàn chéng:
01111
11001
11001
10100
11011
gěi dìng yī xiē yóu xì de chū shǐ zhuàng tài, biān xiě chéng xù pàn duàn yóu xì zhě shì fǒu kě néng zài 6 bù yǐ nèi shǐ suǒ yòu de dēng dū biàn liàng。
shū rù gé shì
dì yīháng yòu yī gè zhèng zhěng shù n, dài biǎo shù jù zhōng gòng yòu n gè dài jiě jué de yóu xì chū shǐ zhuàng tài。
yǐ xià ruò gān xíng shù jù fēn wéi n zǔ, měi zǔ shù jù yòu 5 xíng, měi xíng 5 gè zì fú。 měi zǔ shù jù miáo shù liǎo yī gè yóu xì de chū shǐ zhuàng tài。 gè zǔ shù jù jiān yòng yī gè kōng xíng fēn gé。
duì yú 30% de shù jù, n<=5;
duì yú 100% de shù jù, n<=500。
shū chū gé shì
shū chū shù jù yī gòng yòu n xíng, měi xíng yòu yī gè xiǎo yú děng yú 6 de zhěng shù, tā biǎo shì duì yú shū rù shù jù zhōng duì yìng de yóu xì zhuàng tài zuì shǎo xū yào jǐ bù cái néng shǐ suǒ yòu dēng biàn liàng。
duì yú mǒu yī gè yóu xì chū shǐ zhuàng tài, ruò 6 bù yǐ nèi wú fǎ shǐ suǒ yòu dēng biàn liàng, qǐng shū chū“ -1”。
yàng lì shū rù
3
00111
01011
10001
11010
11100
11101
11101
11110
11111
11111
01111
11111
11111
11111
11111
yàng lì shū chū
3
2
-1
</BLOCKQUOTE>
chéng xù dài mǎ
<CODE>const
BigPrime=3214567;
MaxStep=6;
type
pointer=^rec;
rec=record
v:longint;
step:integer;
next:pointer;
end;
var
total:longint;
hash:array[0..BigPrime-1]ofpointer;
q:array[1..400000]ofrec;
functionupdate(a:longint;p:integer):longint;
begin
a:=axor(1shlp);
ifpmod5<>0thena:=axor(1shl(p-1));
if(p+1)mod5<>0thena:=axor(1shl(p+1));
ifp<20thena:=axor(1shl(p+5));
ifp>4thena:=axor(1shl(p-5));
exit(a);
end;
functionfind(a:longint;step:integer):boolean;
var
now:pointer;
begin
now:=hash[amodBigPrime];
whilenow<>nildo
begin
ifnow^.v=athenexit(true);
now:=now^.next;
end;
new(now);
now^.v:=a;
now^.step:=step;
now^.next:=hash[amodBigPrime];
hash[amodBigPrime]:=now;
total:=total+1;
exit(false);
end;
proceduresolve;
var
p:integer;
close:longint=0;
open:longint=1;
begin
find(1shl25-1,0);
q.v:=1shl25-1;
q.step:=0;
repeat
inc(close);
forp:=0to24do
ifnotfind(update(q[close].v,p),q[close].step+1)and(q[close].step+1<MaxStep)then
begin
open:=open+1;
q[open].v:=update(q[close].v,p);
q[open].step:=q[close].step+1;
end;
untilclose>=open;
end;
procedureprint(a:longint);
var
now:pointer;
begin
now:=hash[amodBigPrime];
whilenow<>nildo
begin
ifnow^.v=athen
begin
writeln(now^.step);
exit;
end;
now:=now^.next;
end;
writeln(-1);
end;
proceduremain;
var
ch:char;
i,j,n:integer;
t:longint;
begin
readln(n);
fori:=1tondo
begin
t:=0;
forj:=1to25do
begin
read(ch);
t:=t*2+ord(ch)-48;
ifjmod5=0thenreadln;
end;
print(t);
ifi<nthenreadln;
end;
end;
begin
solve;
main;
end.</CODE>
======================= xìng gǎn de fēn gē xiàn =======================
<BLOCKQUOTE>Problem:garden/ hé MM guàng huā yuán
tí mù lái yuán
wèn tí miáo shù
huā yuán shè jì qiáng diào, jiǎn dān jiù shì měi。 Matrix67 cháng qù de huā yuán yòu zhe fēi cháng jiǎn dān de bù jú: huā yuán de suǒ yòu jǐng diǎn de wèi zhì dōushì“ duì qí” liǎo de, zhè xiē jǐng diǎn kě yǐ kàn zuò shì píng miàn zuò biāo shàng de gé diǎn。 xiāng lín de jǐng diǎn zhī jiān yòu xiǎo lù xiāng lián, zhè xiē xiǎo lù quán bù píng xíng yú zuò biāo zhóu。 jǐng diǎn hé xiǎo lù zǔ chéng liǎo yī gè“ bù wán zhěng de wǎng gé”。
yī gè diǎn xíng de huā yuán bù jú rú zuǒ tú suǒ shì。 huā yuán bù jú zài 6 xíng 4 liè de wǎng gé shàng, huā yuán de 16 gè jǐng diǎn de wèi zhì yòng hóng sè biāo zhù zài liǎo tú zhōng。 hēi sè xiàn tiáo biǎo shì jǐng diǎn jiān de xiǎo lù, qí yú huī sè bù fēn shí jì bìng bù cún zài。
Matrix67 de shēng rì nà tiān, tā yào dài zhe tā de MM zài huā yuán lǐ yóu wán。 Matrix67 bù huì dài MM liǎng cì jīng guò tóng yī gè jǐng diǎn, yīn cǐ měi gè jǐng diǎn zuì duō bèi yóu lǎn yī cì。 tā hé tā de MM biān zǒu biān liáo, tā men shì rú cǐ de tóu rù yǐ zhì yú tā men cóng bù huì“ zhù dòng dì guǎi wān”。 yě jiù shì shuō, chú fēi qián fāng yǐ méi yòu jǐng diǎn huò shì qián fāng de jǐng diǎn yǐ jīng fǎng wèn guò, fǒu zé tā men huì yī zhí wǎng qián zǒu xià qù。 dāng qián fāng jǐng diǎn bù cún zài huò yǐ yóu lǎn guò shí, Matrix67 huì dài MM lìng xuǎn yī gè fāng xiàng jì xù qián jìn。 yóu yú jǐng diǎn gè shù yòu xiàn, fǎng wèn guò de jǐng diǎn jiāng yuè lái yuè duō, chí zǎo huì chū xiàn bù néng zài zǒu de qíng kuàng( jí sì gè fāng xiàng shàng de xiāng lín jǐng diǎn dū fǎng wèn guò liǎo), cǐ shí tā men jiāng jié shù huā yuán de yóu lǎn。 Matrix67 xī wàng zhī dào yǐ zhè zhǒng fāng shì yóu lǎn huā yuán shì fǒu yòu kě néng biàn lì suǒ yòu de jǐng diǎn。 Matrix67 kě yǐ xuǎn zé cóng rèn yì yī gè jǐng diǎn kāi shǐ yóu lǎn, yǐ rèn yì yī gè jǐng diǎn jié shù。
zài shàng tú suǒ shì de huā yuán bù jú zhōng, yī zhǒng kě néng de yóu lǎn fāng shì rú yòu tú suǒ shì。 zhè zhǒng liú lǎn fāng shì cóng (1,2) chū fā, yǐ (2,4) jié shù, jīng guò měi gè jǐng diǎn qià hǎo yī cì。
shū rù gé shì
dì yīháng shū rù liǎng gè yòng kònggé gé kāi de zhèng zhěng shù m hé n, biǎo shì huā yuán bèi bù jú zài m xíng n liè de wǎng gé shàng。
yǐ xià m xíng měi xíng n gè zì fú, zì fú“ 0” biǎo shì gāi wèi zhì méi yòu jǐng diǎn, zì fú“ 1” biǎo shì duì yìng wèi zhì yòu jǐng diǎn。 zhè xiē shù zì zhī jiān méi yòu kònggé。
shū chū gé shì
nǐ de chéng xù xū yào xún zhǎo mǎn zú“ bù zhù dòng guǎi wān” xìng zhì qiě biàn lì suǒ yòu jǐng diǎn de yóu lǎn lù xiàn。
rú guǒ méi yòu zhè yàng de yóu lǎn lù xiàn, qǐng shū chū yīháng“ Impossible”( bù dài yǐn hào, zhù yì dà xiǎo xiě)。
rú guǒ cún zài yóu lǎn lù xiàn, qǐng yǐ cì shū chū nǐ de fāng 'àn zhōng fǎng wèn de jǐng diǎn de zuò biāo, měi xíng shū chū yī gè。 zuò biāo de biǎo shì gé shì wéi“ (x,y)”, dài biǎo dì x hángdì y liè。
rú guǒ yòu duō zhǒng fāng 'àn, nǐ zhǐ xū yào shū chū qí zhōng yī zhǒng jí kě。 píng cè xì tǒng kě yǐ pàn duàn nǐ de fāng 'àn de zhèng què xìng。
yàng lì shū rù
64
1100
1001
1111
1100
1110
1110
yàng lì shū chū
(1,2)
(1,1)
(2,1)
(3,1)
(4,1)
(5,1)
(6,1)
(6,2)
(6,3)
(5,3)
(5,2)
(4,2)
(3,2)
(3,3)
(3,4)
(2,4)
shù jù guī mó
duì yú 30% de shù jù, n,m<=5;
duì yú 100% de shù jù, n,m<=10。
</BLOCKQUOTE>
chéng xù dài mǎ:
<CODE>programgarden;
const
dir:array[1..4,1..2]ofinteger=
((1,0),(0,1),(-1,0),(0,-1));
type
arr=array[1..10]ofinteger;
rec=recordx,y:integer;end;
var
map:array[0..11,0..11]ofboolean;
ans:array[1..100]ofrec;
n,m,max:integer;
step:integer=1;
state:arr;
procedurereadp;
var
i,j:integer;
ch:char;
begin
readln(m,n);
fori:=1tondo
begin
forj:=1tomdo
begin
read(ch);
map[i,j]:=(ch='1');
inc(max,ord(map[i,j]))
end;
readln;
end;
end;
procedurewritep;
var
i:integer;
begin
fori:=1tostepdo
writeln('(',ans.x,',',ans.y,')');
end;
proceduresolve(x,y:integer);
var
tx,ty,d:integer;
step_cache:integer;
state_cache:arr;
begin
step_cache:=step;
state_cache:=state;
ifstep=maxthen
begin
writep;
exit;
end;
ford:=1to4do
begin
tx:=x+dir[d,1];
ty:=y+dir[d,2];
whilemap[tx,ty]and(notstate[tx]and(1shl(ty-1))>0)do
begin
inc(step);
ans[step].x:=tx;
ans[step].y:=ty;
state[tx]:=state[tx]or(1shl(ty-1));
tx:=tx+dir[d,1];
ty:=ty+dir[d,2];
end;
tx:=tx-dir[d,1];
ty:=ty-dir[d,2];
if(tx<>x)or(ty<>y)thensolve(tx,ty);
state:=state_cache;
step:=step_cache;
end;
end;
{====main====}
var
i,j:integer;
begin
assign(input,'garden.in');
reset(input);
assign(output,'garden.out');
rewrite(output);
readp;
fori:=1tondo
forj:=1tomdo
ifmap[i,j]then
begin
ans.x:=i;
ans.y:=j;
state:=1shl(j-1);
solve(i,j);
state:=0;
end;
close(input);
close(output);
end.</CODE>
duì C yǔ yán zhōng wèi yùn suàn de yī diǎn bǔ chōng:( wèi shù bù tóng de yùn suàn shǔzhī jiān de yùn suàn guī zé) -
C yǔ yán zhōng, wèi yùn suàn de duì xiàng kě yǐ shì zhěng xíng( int) hé zì fú xíng( char) shù jù。( zhěng xíng shù jù kě yǐ zhí jiē zhuǎn huà chéng 'èr jìn zhì shù, zì fú xíng shù jù zài nèi cún zhōng yǐ tā de ASCII mǎ zhí cún fàng, yě kě yǐ zhàn huà chéng 'èr jìn zhì shù) dāng liǎng gè yùn suàn shù lèi xíng bù tóng shí, wèi shù yì huì bù tóng。 yù dào zhè zhǒng qíng kuàng, xì tǒng jiāng zì dòng jìn xíng rú xià chǔlǐ:
1 jiāng liǎng gè yùn suàn shù yòu duān duì qí。
2 zài jiāng wèi shù duǎn de yī gè yùn suàn shù wǎng gāo wèi kuò chōng, jí: wú fú hào shù hé zhèng zhěng shù zuǒ cè yòng 0 bǔ quán ; fù shù zuǒ cè yòng 1 bǔ quán; rán hòu duì wèi shù xiāng děng de liǎng gè yùn suàn shù, àn wèi jìn xíng yùn suàn。 | | - : position action
| | zhú wèi yùn suàn | yí wèi yùn suàn fú | |
|
|
|