Next: Math Functions, Previous: Rounding Operations, Up: Numbers [Contents][Index]
·×»»µ¡ÆâÉô¤Ç¤Ï¡¢À°¿ô¤Ï2¿Ê¿ô¡¢¤Ä¤Þ¤ê¡¢ ¥Ó¥Ã¥È¡Êbit¡¢³Æ·å¤Ï0¤«1¡ËÎó¤Çɽ¸½¤µ¤ì¤Þ¤¹¡£ ¥Ó¥Ã¥È±é»»¤Ï¡¢¤½¤Î¤è¤¦¤Ê¥Ó¥Ã¥ÈÎó¤Î³Æ¥Ó¥Ã¥È¤´¤È¤ËºîÍѤ·¤Þ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢¥·¥Õ¥È¡Êshifting¡Ë¤Ï¡¢¥Ó¥Ã¥ÈÎó¤òÁ´ÂΤȤ·¤Æº¸¤ä±¦¤Ë 1·å°Ê¾å°Üư¤·¤Æ¡¢¤½¤Î¡Ø°Üư¸å¤Î¡Ù¥Ñ¥¿¡¼¥ó¤ò·ë²Ì¤È¤·¤Þ¤¹¡£
Emacs Lisp¤Ë¤ª¤±¤ë¥Ó¥Ã¥È±é»»¤ÏÀ°¿ô¤Ë¸Â¤ê¤Þ¤¹¡£
ÏÀÍý¥·¥Õ¥È¡Êlogical shift¡Ë¤Îά¤«¤é¤¤Æ¤¤¤ëlsh
¤Ï¡¢
integer1¤Î¥Ó¥Ã¥ÈÎó¤òcount·åº¸¤Ø¡¢
¤¢¤ë¤¤¤Ï¡¢count¤¬Éé¤Ê¤é¤Ð±¦¤Ø¤º¤é¤·¡¢¶õ¤¤¤¿¥Ó¥Ã¥È¤Ë¤Ï0¤òµÍ¤á¤ë¡£
count¤¬Éé¤Ç¤¢¤ì¤Ð¡¢lsh
¤ÏºÇº¸¡ÊºÇ¾å°Ì¡Ë¥Ó¥Ã¥È¤Ë0¤òµÍ¤á¡¢
integer1¤¬Éé¤Ç¤¢¤Ã¤Æ¤â·ë²Ì¤ÏÀµ¤Ë¤Ê¤ë¡£
¤³¤ì¤ÈÂоÈŪ¤Ê¤Î¤¬²¼¤Îash
¡£
lsh
¤ÎÎã¤ò2¤Ä¼¨¤¹¡£
¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò1·åº¸¤Ø¤º¤é¤¹¡£
¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤Î¾å°Ì¥Ó¥Ã¥È¤Ï¤¹¤Ù¤Æ0¤Ê¤Î¤Ç²¼°Ì8¥Ó¥Ã¥È¤À¤±¤ò¼¨¤¹¡£
(lsh 5 1) ⇒ 10 ;; 10¿Ê¿ô5¤Ï¡¢ 10¿Ê¿ô10¤Ë¤Ê¤ë 00000101 ⇒ 00001010 (lsh 7 1) ⇒ 14 ;; 10¿Ê¿ô7¤Ï¡¢10¿Ê¿ô14¤Ë¤Ê¤ë 00000111 ⇒ 00001110
Î㤫¤é¤ï¤«¤ë¤è¤¦¤Ë¡¢¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò1·åº¸¤Ø¤º¤é¤¹¤È¡¢ ¤â¤È¤Î¿ôÃͤÎ2Çܤοô¤Ë¤Ê¤ë¡£
¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò2·åº¸¤Ø¤º¤é¤¹¤È¡¢¡Ê8¥Ó¥Ã¥ÈŤÎ2¿Ê¿ô¤Ç¤Ï¡Ë¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(lsh 3 2)
⇒ 12
;; 10¿Ê¿ô3¤Ï¡¢10¿Ê¿ô12¤Ë¤Ê¤ë
00000011 ⇒ 00001100
°ìÊý¡¢±¦¤Ø¤º¤é¤¹¤È¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(lsh 6 -1)
⇒ 3
;; 10¿Ê¿ô6¤Ï¡¢10¿Ê¿ô3¤Ë¤Ê¤ë
00000110 ⇒ 00000011
(lsh 5 -1)
⇒ 2
;; 10¿Ê¿ô5¤Ï¡¢10¿Ê¿ô2¤Ë¤Ê¤ë
00000101 ⇒ 00000010
Î㤫¤é¤ï¤«¤ë¤è¤¦¤Ë¡¢¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò1·å±¦¤Ø¤º¤é¤¹¤È¡¢ Àµ¤ÎÀ°¿ô¤Î¿ô¤ò2¤Ç½ü¤·¤ÆÀڤ겼¤²¤ë¡£
Emacs Lisp¤Î¤¹¤Ù¤Æ¤Î»»½Ñ´Ø¿ô¤ÈƱÍͤˡ¢
´Ø¿ôlsh
¤Ï·å°î¤ì¡Ê¥ª¡¼¥Ð¥Õ¥í¡¼¡Ë¤ò¸¡ºº¤·¤Ê¤¤¤Î¤Ç¡¢
º¸¤Ø¤º¤é¤¹¤È¾å°Ì¥Ó¥Ã¥È¤ò¼Î¤Æ¤µ¤ê¿ô¤ÎÉ乿¤òÊѤ¨¤Æ¤·¤Þ¤¦¤³¤È¤¬¤¢¤ë¡£
¤¿¤È¤¨¤Ð¡¢28¥Ó¥Ã¥ÈŤη׻»µ¡¤Ç¤Ï¡¢
134,217,727¤òº¸¤Ø¤º¤é¤¹¤È-2¤Ë¤Ê¤ë¡£
(lsh 134217727 1) ; º¸¥·¥Õ¥È
⇒ -2
28¥Ó¥Ã¥ÈĹ¤Î¼ÂÁõ¤Î2¿Ê¿ô¤Ç¤Ï¡¢°ú¿ô¤Ï¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
;; 10¿Ê¿ô134,217,727
0111 1111 1111 1111 1111 1111 1111
¤³¤ì¤òº¸¤Ø¤º¤é¤¹¤È¡¢¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë
;; 10¿Ê¿ô-2
1111 1111 1111 1111 1111 1111 1110
ash
¡Ê»»½Ñ¥·¥Õ¥È¡Êarithmetic shift¡Ë¡Ë¤Ï¡¢
integer1¤Î¥Ó¥Ã¥È¤òcount·åº¸¤Ø¡¢¤¢¤ë¤¤¤Ï¡¢
count¤¬Éé¤Ê¤é¤Ð±¦¤Ø¤º¤é¤¹¡£
ash
¤Ïlsh
¤ÈƱ¤¸·ë²Ì¤Ë¤Ê¤ë¤¬¡¢
integer1¤Ècount¤Îξ¼Ô¤¬Éé¤Î¾ì¹ç¤ò½ü¤¯¡£
¤³¤Î¾ì¹ç¡¢ash
¤Ïº¸¤Î¶õ¤¤¤¿¥Ó¥Ã¥È¤Ë¤Ï1¤òÆþ¤ì¤ë¤¬¡¢
lsh
¤Ï¤½¤Î¤è¤¦¤Ê¥Ó¥Ã¥È¤Ë¤Ï0¤òÆþ¤ì¤ë¡£
¤·¤¿¤¬¤Ã¤Æ¡¢ash
¤Ç¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò1·å±¦¤Ø¤º¤é¤¹¤È¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(ash -6 -1) ⇒ -3
;; 10¿Ê¿ô-6¤Ï¡¢10¿Ê¿ô-3¤Ë¤Ê¤ë
1111 1111 1111 1111 1111 1111 1010
⇒
1111 1111 1111 1111 1111 1111 1101
ÂоÈŪ¤Ë¡¢lsh
¤Ç¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò1·å±¦¤Ø¤º¤é¤¹¤È¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(lsh -6 -1) ⇒ 134217725
;; 10¿Ê¿ô-6¤Ï¡¢10¿Ê¿ô134,217,725¤Ë¤Ê¤ë
1111 1111 1111 1111 1111 1111 1010
⇒
0111 1111 1111 1111 1111 1111 1101
¾¤ÎÎã¤ò°Ê²¼¤Ë¤·¤á¤¹¡£
; 28¥Ó¥Ã¥È2¿ÊÃÍ (lsh 5 2) ; 5 = 0000 0000 0000 0000 0000 0000 0101 ⇒ 20 ; = 0000 0000 0000 0000 0000 0001 0100
(ash 5 2) ⇒ 20 (lsh -5 2) ; -5 = 1111 1111 1111 1111 1111 1111 1011 ⇒ -20 ; = 1111 1111 1111 1111 1111 1110 1100 (ash -5 2) ⇒ -20
(lsh 5 -2) ; 5 = 0000 0000 0000 0000 0000 0000 0101 ⇒ 1 ; = 0000 0000 0000 0000 0000 0000 0001
(ash 5 -2) ⇒ 1
(lsh -5 -2) ; -5 = 1111 1111 1111 1111 1111 1111 1011 ⇒ 4194302 ; = 0011 1111 1111 1111 1111 1111 1110
(ash -5 -2) ; -5 = 1111 1111 1111 1111 1111 1111 1011 ⇒ -2 ; = 1111 1111 1111 1111 1111 1111 1110
¤³¤Î´Ø¿ô¤Ï°ú¿ô¤Î¡ØÏÀÍýÀѡ٤òÊÖ¤¹¡£ ¤Ä¤Þ¤ê¡¢¤¹¤Ù¤Æ¤Î°ú¿ô¤ÎnÈÖÌܤΥӥåȤ¬1¤Ç¤¢¤ë¾ì¹ç¤Ë¸Â¤ê¡¢ ·ë²Ì¤ÎnÈÖÌܤΥӥåȤâ1¤Ë¤Ê¤ë¡£
¤¿¤È¤¨¤Ð¡¢4¥Ó¥Ã¥È¤Î2¿Ê¿ô¤Ç¹Í¤¨¤ë¤È¡¢ 13¤È12¤Î¡ØÏÀÍýÀѡ٤Ï12¤Ë¤Ê¤ë¡£ ¤Ä¤Þ¤ê¡¢1101¤Ë1100¤òÁȤ߹ç¤ï¤»¤ë¤È1100¤Ë¤Ê¤ë¡£ ¤É¤Á¤é¤Î2¿Ê¿ô¤âºÇº¸¤Î2¥Ó¥Ã¥È¤Ï1¤Ê¤Î¤Ç¡¢Ìá¤êÃͤκǺ¸¤Î2¥Ó¥Ã¥È¤â1¤Ë¤Ê¤ë¡£ ¤·¤«¤·¡¢ºÇ±¦¤Î2¥Ó¥Ã¥È¤Ï¡¢°ìÊý¤Î°ú¿ô¤Ç¤Ï¤½¤ì¤¾¤ì¤¬0¤Ê¤Î¤Ç¡¢ Ìá¤êÃͤκDZ¦¤Î2¥Ó¥Ã¥È¤â0¤Ë¤Ê¤ë¡£
¤·¤¿¤¬¤Ã¤Æ¡¢¤Ä¤®¤Î¤È¤ª¤ê¡£
(logand 13 12) ⇒ 12
logand
¤Ë¤Þ¤Ã¤¿¤¯°ú¿ô¤ò»ØÄꤷ¤Ê¤¤¤ÈÃÍ-1¤òÊÖ¤¹¡£
¤³¤Î¿ô¤Ï2¿Êɽ¸½¤Ç¤Ï¤¹¤Ù¤Æ1¤À¤±¤Ê¤Î¤Ç¡¢
logand
¤Î¹±Åù¸µ¤Ç¤¢¤ë¡£
logand
¤Ë°ú¿ô¤ò1¤Ä¤À¤±»ØÄꤹ¤ë¤È¤½¤Î°ú¿ô¤òÊÖ¤¹¡£
; 28¥Ó¥Ã¥È2¿ÊÃÍ (logand 14 13) ; 14 = 0000 0000 0000 0000 0000 0000 1110 ; 13 = 0000 0000 0000 0000 0000 0000 1101 ⇒ 12 ; 12 = 0000 0000 0000 0000 0000 0000 1100
(logand 14 13 4) ; 14 = 0000 0000 0000 0000 0000 0000 1110 ; 13 = 0000 0000 0000 0000 0000 0000 1101 ; 4 = 0000 0000 0000 0000 0000 0000 0100 ⇒ 4 ; 4 = 0000 0000 0000 0000 0000 0000 0100
(logand)
⇒ -1 ; -1 = 1111 1111 1111 1111 1111 1111 1111
¤³¤Î´Ø¿ô¤Ï°ú¿ô¤Î¡ØÏÀÍýÏ¡٤òÊÖ¤¹¡£
¤Ä¤Þ¤ê¡¢¾¯¤Ê¤¯¤È¤â¤É¤ì¤«1¤Ä¤Î°ú¿ô¤ÎnÈÖÌܤΥӥåȤ¬1¤Ç¤¢¤ë¾ì¹ç¤Ë¸Â¤ê¡¢
·ë²Ì¤ÎnÈÖÌܤΥӥåȤâ1¤Ë¤Ê¤ë¡£
°ú¿ô¤ò»ØÄꤷ¤Ê¤¤¤È0¤òÊÖ¤¹¤¬¡¢¤³¤ì¤Ï¤³¤Î±é»»¤Î¹±Åù¸µ¤Ç¤¢¤ë¡£
logior
¤Ë°ú¿ô¤ò1¤Ä¤À¤±»ØÄꤹ¤ë¤È¤½¤Î°ú¿ô¤òÊÖ¤¹¡£
; 28¥Ó¥Ã¥È2¿ÊÃÍ (logior 12 5) ; 12 = 0000 0000 0000 0000 0000 0000 1100 ; 5 = 0000 0000 0000 0000 0000 0000 0101 ⇒ 13 ; 13 = 0000 0000 0000 0000 0000 0000 1101
(logior 12 5 7) ; 12 = 0000 0000 0000 0000 0000 0000 1100 ; 5 = 0000 0000 0000 0000 0000 0000 0101 ; 7 = 0000 0000 0000 0000 0000 0000 0111 ⇒ 15 ; 15 = 0000 0000 0000 0000 0000 0000 1111
¤³¤Î´Ø¿ô¤Ï°ú¿ô¤Î¡ØÇÓ¾ŪÏÀÍýÏ¡٤òÊÖ¤¹¡£
¤Ä¤Þ¤ê¡¢°ú¿ô¤ÎnÈÖÌܤΥӥåȤ¬1¤Ç¤¢¤ë¤â¤Î¤¬´ñ¿ô¸Ä¤Î¾ì¹ç¤Ë¸Â¤ê¡¢
·ë²Ì¤ÎnÈÖÌܤΥӥåȤâ1¤Ë¤Ê¤ë¡£
°ú¿ô¤ò»ØÄꤷ¤Ê¤¤¤È0¤òÊÖ¤¹¤¬¡¢¤³¤ì¤Ï¤³¤Î±é»»¤Î¹±Åù¸µ¤Ç¤¢¤ë¡£
logxor
¤Ë°ú¿ô¤ò1¤Ä¤À¤±»ØÄꤹ¤ë¤È¤½¤Î°ú¿ô¤òÊÖ¤¹¡£
; 28¥Ó¥Ã¥È2¿ÊÃÍ (logxor 12 5) ; 12 = 0000 0000 0000 0000 0000 0000 1100 ; 5 = 0000 0000 0000 0000 0000 0000 0101 ⇒ 9 ; 9 = 0000 0000 0000 0000 0000 0000 1001
(logxor 12 5 7) ; 12 = 0000 0000 0000 0000 0000 0000 1100 ; 5 = 0000 0000 0000 0000 0000 0000 0101 ; 7 = 0000 0000 0000 0000 0000 0000 0111 ⇒ 14 ; 14 = 0000 0000 0000 0000 0000 0000 1110
¤³¤Î´Ø¿ô¤Ï°ú¿ô¤ÎÏÀÍýŪ¤ÊÊä¿ô¤òÊÖ¤¹¡£ ¤Ä¤Þ¤ê¡¢integer¤ÎnÈÖÌܤΥӥåȤ¬0¤Ç¤¢¤ë¾ì¹ç¤Ë¸Â¤ê¡¢ ·ë²Ì¤ÎnÈÖÌܤΥӥåȤÏ1¤Ë¤Ê¤ë¡£
(lognot 5) ⇒ -6 ;; 5 = 0000 0000 0000 0000 0000 0000 0101 ;; becomes ;; -6 = 1111 1111 1111 1111 1111 1111 1010
Next: Math Functions, Previous: Rounding Operations, Up: Numbers [Contents][Index]