|
¥Þ¥¹¥¯¤Ë¤Ä¤¤¤Æ¤Ï²ò·è¤¤¤¿¤·¤Þ¤·¤¿¡£
10101111¡¡¢«ÆþÎϤ·¤¿ÃÍ
00000011¡¡¢«¥Þ¥¹¥¯½èÍý
--------
00000011¡¡¢«¥Þ¥¹¥¯¸å¤ÎÃÍ
¤¬Àµ¤·¤¯¡¢²¼°Ì2¥Ó¥Ã¥È¤ÎÃͤˤè¤Ã¤Æ4¥Ñ¥¿¡¼¥ó¤Î²Ã¹©¤ò»Ü¤¹°Ù¤Î¡¢¤½¤ÎÃͤȤϥޥ¹¥¯¸å¤ÎÃͤβ¼°Ì2¥Ó¥Ã¥È¤Ç¤·¤¿¡£
¤½¤Î¸å¡¢ÆþÎϤ·¤¿Ãͤˡ¢É乿ÊÑ´¹¡¢5ÇÜ¡¢1/4ÇÜ¡¢0¤Ë¤¹¤ë¤Î²Ã¹©¤ò»Ü¤¹¤è¤¦¤Ç¤¹¡£
¤½¤³¤Ç¡¢É乿ÊÑ´¹¤ò¹Ô¤¦°Ù¤Ë2¿Ê¿ô¤ËÊÑ´¹¤·¤¿¤¤¤Î¤Ç¤¹¡£
ºî¤Ã¤¿¥×¥í¥°¥é¥à¤Ï¤³¤Î¤è¤¦¤Ê´¶¤¸¤Ç¤¹¡£
#include<stdio.h>
main(){
int value,aftermask,mask(int);
printf("value = ");
scanf("%d",&value);//ÃͤòÆþÎÏ
aftermask = value & 3;//¡¡¡²¼°Ì2¥Ó¥Ã¥È¤ò¥Þ¥¹¥¯
printf("%d\n",aftermask);
mask(value);
printf("%d\n",value);//¤
}
int mask(int value){
int i,n;
int answer[32],rest[32];
answer[0] = value;¡¡¡¡¡¡¡¡¡¡¡¡
for(i=0;;i++){
answer[i+1] = answer[i]/2;¡¡
rest[i] = answer[i] - answer[i+1]*2;
if(answer[i+1]==0){
n = i; //²¿ÈÖÌܤÎÇÛÎó¤Þ¤Ç;¤ê¤¬Æþ¤Ã¤¿¤«¤òn¤ËÆþ¤ì¤Æ¤ª¤¯
break;
}
}
for(i=n;i>=0;i--){
printf("%d",rest[i]);//¢¡¡nÈÖÌܤ«¤éµÕ¤ËÇÛÎó¤òʤ٤ë
}
printf("\n");
return(rest[i]);//£¡¡value¤ËÊÖ¤¹
}
¤³¤Î¥×¥í¥°¥é¥à¤Ç¤ÎÌäÂêÅÀ¤¬¡¢
£±¡¢¡¤Î²¼°Ì2¥Ó¥Ã¥È¤Î¥Þ¥¹¥¯¤Î¼è¤êÊý¤Ï¤³¤ì¤Ç¤è¤¤¤Î¤«¡£
£²¡¢¢¤Çrest[i]¤ò½ÐÎϤ·¤¿¤È¤¤ÏÇÛÎó¤ËÆþ¤Ã¤Æ¤¤¤ë;¤ê¤Î1¤«0¤¬Ê¤ó¤Ç½ÐÎϤµ¤ì¤ë¤¬¡¢£¤Îreturn(rest[i]);¤ÇÃͤòvalue¤ËÊÖ¤·¤¿¤È¤¡¢¤¤Ç¤Ïint value ¤Ê¤Î¤Çrest[i]¤ËÆþ¤Ã¤Æ¤¤¤ëÇÛÎ󤬤½¤Î¤Þ¤Þ½ÐÎϤµ¤ì¤º¤Ë¡¢10¿Êɽµ¤Ëľ¤Ã¤Ævalue¤½¤Î¤Þ¤Þ¤ÎÃͤǽÐÎϤµ¤ì¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢¤¤ÎÉôʬ¤Ç2¿Êɽµ¤·¤¿¤¤¡£
£³¡¢2¤ÎÊä¿ô¤òµá¤á¤ë¤¿¤á¤Ë¡¢r¿Ê¿ôn·å¤Î¿ôx¤Îr¤ÎÊä¿ô¤Ï(r^n-x)¤Ê¤Î¤Ç¡¢2¿Ê¿ô¤ËÊÑ´¹¤·¤¿¤È¤¤Î·å¿ô¤¬ÃΤꤿ¤¤¤¬¡¢¤É¤¦¤¹¤ì¤Ð¤è¤¤¤Î¤«¤ï¤«¤é¤Ê¤¤¡£
£´¡¢¤³¤Î¥×¥í¥°¥é¥à¤À¤È¡¢
10¿Ê¡§7¢ª2¿Ê¡§111¤Çɽµ¤Ï111¤À¤¬¡¢00000111¤Ë¡£
10¿Ê¡§300¢ª2¿Ê:100101100¤Çɽµ¤Ï100101100¤À¤¬¡¢00000001 00101100¤Ë¡£
¤Î¤è¤¦¤Ë8¥Ó¥Ã¥È¤´¤È¤Îɽµ¤Ë¤·¤¿¤¤¡£
¤«¤Ê¤ê·ê¤À¤é¤±¤Ê¥×¥í¥°¥é¥à¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢½¤ÀµÅÀ¤òµ¹¤·¤¯¤ª´ê¤¤Ãפ·¤Þ¤¹¡£
|