import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// スã‚ャナーを使ã£ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰æ•´æ•°ã®å…¥åŠ›ã‚’èªã¿å–ã‚‹
Scanner scanner = new Scanner(System.in);
System.out.print("整数を入力ã—ã¦ãã ã•ã„: ");
int number = scanner.nextInt(); // æ•´æ•°ã®å…¥åŠ›ã‚’èªã¿å–り
// æ•´æ•°ã®æœ€ã‚‚å³ç«¯ã®ãƒ“ットをå–å¾—
int rightmostBit = number & 1;
// åˆ¤å®šçµæžœã‚’表示
if (rightmostBit == 1) {
System.out.println("最もå³ç«¯ã®ãƒ“ットã¯1ã§ã™ã€‚");
} else {
System.out.println("最もå³ç«¯ã®ãƒ“ットã¯0ã§ã™ã€‚");
}
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰æ•´æ•°ã®å…¥åŠ›ã‚’å—ã‘å–りã€ãã®æ•´æ•°ã®æœ€ã‚‚å³ç«¯ã®ãƒ“ットをå–å¾—ã—ã€ãã®ãƒ“ットãŒ1ã‹0ã‹ã‚’判定ã—ã¦çµæžœã‚’表示ã—ã¦ã„ã¾ã™ã€‚
æ•´æ•°ã®ãƒ“ットをå–å¾—ã™ã‚‹
æ•´æ•°ã®ãƒ“ットをå–å¾—ã™ã‚‹ã«ã¯ã€ä¸Žãˆã‚‰ã‚ŒãŸæ•´æ•°ã®ä¸ã‹ã‚‰ç‰¹å®šã®ãƒ“ット(æ¡ï¼‰ã‚’å–ã‚Šå‡ºã™æ“作を指ã—ã¾ã™ã€‚é€šå¸¸ã€æ•´æ•°ã¯2進数ã§è¡¨ç¾ã•れã€å„ビットã¯0ã¾ãŸã¯1ã®å€¤ã‚’æŒã¡ã¾ã™ã€‚æ•´æ•°ã®ç‰¹å®šã®ãƒ“ットをå–å¾—ã™ã‚‹ã“ã¨ã¯ã€ãã®ãƒ“ットãŒ1ã¾ãŸã¯0ã§ã‚ã‚‹ã‹ã‚’知るãŸã‚ã«å½¹ç«‹ã¡ã¾ã™ã€‚
æ•´æ•°ã®ç‰¹å®šã®ãƒ“ットをå–å¾—ã™ã‚‹æ–¹æ³•ã¯ã€ãƒ“ット演算を使用ã™ã‚‹ã“ã¨ã§ã™ã€‚主ãªãƒ“ット演算åã«ã¯æ¬¡ã®ã‚‚ã®ãŒã‚りã¾ã™ï¼š
ビットå˜ä½ã®AND演算(&): 2ã¤ã®æ•´æ•°ã®å¯¾å¿œã™ã‚‹ãƒ“ットãŒä¸¡æ–¹ã¨ã‚‚1ã®å ´åˆã«1ã‚’è¿”ã—ã€ãれ以外ã®å ´åˆã¯0ã‚’è¿”ã—ã¾ã™ã€‚
ビットå˜ä½ã®OR演算(|): 2ã¤ã®æ•´æ•°ã®å¯¾å¿œã™ã‚‹ãƒ“ットã®å°‘ãªãã¨ã‚‚1ã¤ãŒ1ã®å ´åˆã«1ã‚’è¿”ã—ã€ä¸¡æ–¹ã¨ã‚‚0ã®å ´åˆã¯0ã‚’è¿”ã—ã¾ã™ã€‚
ビットå˜ä½ã®XOR演算(^): 2ã¤ã®æ•´æ•°ã®å¯¾å¿œã™ã‚‹ãƒ“ットãŒç•°ãªã‚‹å ´åˆã«1ã‚’è¿”ã—ã€åŒã˜å ´åˆã¯0ã‚’è¿”ã—ã¾ã™ã€‚
ビットå˜ä½ã®å転演算(~): æ•´æ•°ã®å„ビットをå転ã•ã›ã¾ã™ï¼ˆ0ã‚’1ã«ã€1ã‚’0ã«å¤‰æ›ï¼‰ã€‚
具体的ãªãƒ“ットをå–å¾—ã™ã‚‹æ‰‹é †ã¯ã€æ¬¡ã®é€šã‚Šã§ã™ï¼š
整数を特定ã®ãƒ“ットマスクã¨AND演算を行ã„ã€å¯¾å¿œã™ã‚‹ãƒ“ットをå–å¾—ã—ã¾ã™ã€‚ãŸã¨ãˆã°ã€æœ€ã‚‚å³ç«¯ï¼ˆæœ€ä½Žä½ï¼‰ã®ãƒ“ットをå–å¾—ã™ã‚‹å ´åˆã€ãƒ“ットマスクã¨ã—ã¦1を使用ã—ã¾ã™ã€‚
ビット演算ã®çµæžœã¯ã€å–å¾—ã—ãŸãƒ“ットã®å€¤ï¼ˆ1ã¾ãŸã¯0)をæŒã¤æ–°ã—ã„æ•´æ•°ã¨ã—ã¦å–å¾—ã•れã¾ã™ã€‚
以下ã¯ã€Javaã§æ•´æ•°ã®æœ€ã‚‚å³ç«¯ã®ãƒ“ットをå–å¾—ã™ã‚‹ä¾‹ã‚’示ã—ã¾ã™ï¼š
int number = 10; // 例ã¨ã—ã¦æ•´æ•°10を使用
int rightmostBit = number & 1; // 最もå³ç«¯ã®ãƒ“ットをå–å¾—
System.out.println("最もå³ç«¯ã®ãƒ“ットã¯: " + rightmostBit);
ã“ã®ä¾‹ã§ã¯ã€æ•´æ•°10ã®2進数表ç¾ã¯ã€Œ1010ã€ã§ã‚ã‚Šã€æœ€ã‚‚å³ç«¯ã®ãƒ“ットã¯1ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€rightmostBit ã«ã¯1ãŒæ ¼ç´ã•れã€çµæžœã¨ã—ã¦ã€Œæœ€ã‚‚å³ç«¯ã®ãƒ“ットã¯: 1ã€ã¨è¡¨ç¤ºã•れã¾ã™ã€‚
10進数を2進数ã«å¤‰æ›ã™ã‚‹æ–¹æ³•
10進数を2進数ã«å¤‰æ›ã™ã‚‹æ–¹æ³•ã¯ã€æ•´æ•°ã‚’2ã§å‰²ã‚ŠãªãŒã‚‰å‰°ä½™ï¼ˆä½™ã‚Šï¼‰ã‚’記録ã—ã€é€†é †ã«ä¸¦ã¹ã¦ã„ãæ–¹æ³•ã§ã™ã€‚以下ã¯ã€10進数を2進数ã«å¤‰æ›ã™ã‚‹æ‰‹é †ã§ã™ï¼š
- 変æ›ã—ãŸã„10é€²æ•°ã‚’é¸æŠžã—ã¾ã™ã€‚例ã¨ã—ã¦ã€10é€²æ•°ã®æ•´æ•°ã€Œ75ã€ã‚’2進数ã«å¤‰æ›ã™ã‚‹ã“ã¨ã‚’考ãˆã¦ã¿ã¾ã—ょã†ã€‚
- æ•´æ•°ã‚’2ã§å‰²ã‚Šã€å•†ã¨ä½™ã‚Šã‚’計算ã—ã¾ã™ã€‚
- 75 ÷ 2 = 37 余り 1
- 次ã«ã€è¨ˆç®—ã•れãŸå•†ã‚’2ã§å‰²ã‚Šã€å†ã³å•†ã¨ä½™ã‚Šã‚’計算ã—ã¾ã™ã€‚
- 37 ÷ 2 = 18 余り 1
- åŒæ§˜ã«ç¹°ã‚Šè¿”ã—ã¾ã™ã€‚
- 18 ÷ 2 = 9 余り 0
- 9 ÷ 2 = 4 余り 1
- 4 ÷ 2 = 2 余り 0
- 2 ÷ 2 = 1 余り 0
- 1 ÷ 2 = 0 余り 1
- ã“れを繰り返ã—ã€å•†ãŒ0ã«ãªã‚‹ã¾ã§è¨ˆç®—ã—ã¾ã™ã€‚ã“ã®ã¨ãã€è¨ˆç®—ã—ãŸä½™ã‚Šã‚’é€†é †ã«ä¸¦ã¹ã‚‹ã¨ã€10進数ã®75ãŒ2進数ã§ã€Œ1001011ã€ã¨ãªã‚Šã¾ã™ã€‚
ã—ãŸãŒã£ã¦ã€10進数75ã‚’2進数ã«å¤‰æ›ã™ã‚‹ã¨ã€Œ1001011ã€ã§ã™ã€‚
ã“ã®æ‰‹æ³•ã¯ã€æ•´æ•°ã‚’2ã§å‰²ã£ã¦ã„ãã“ã¨ã§ã€æœ€ã‚‚å³ç«¯ã®ãƒ“ットã‹ã‚‰å·¦ç«¯ã®ãƒ“ットã¾ã§é †ç•ªã«è¨ˆç®—ã™ã‚‹æ–¹æ³•ã§ã™ã€‚ã“ã®ãƒ—ãƒã‚»ã‚¹ã‚’å復的ã«è¡Œã†ã“ã¨ã§ã€10進数を2進数ã«å¤‰æ›ã§ãã¾ã™ã€‚
「003 演算åã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント