演習問題4解答例

問1 演算子による演算結果
問2 指定されたビットの取り出し
問3 指定されたビットの設定
問4 ビット操作による乗算

[問1]次の演算結果がどのようになるかを見るための適当なプログラムを書き,その実行結果から演算結果について説明せよ.
(1)x = (a == 10)
(2)(c >= 'a') && (c <= 'z')

(1)a が 10 なら真,そうでなければ偽
(2)c が 小文字のアルファベットなら真,そうでなければ偽
/****************************/
/* 論理演算                 */
/*      coded by Y.Suganuma */
/****************************/
import java.io.*;

public class Test {
	public static void main(String args[])
	{
		int a;
		char c;
		boolean x1, x2;
/*
          x=(a==10) の評価
*/
		a  = 10;
		x1 = (a == 10);
		a  = 5;
		x2 = (a == 10);
		System.out.println("aが10の時,xは " + x1);
		System.out.println("aが5の時,xは " + x2);
/*
          (c >= 'a') && (c <= 'z') の評価
*/
		c  = 'h';
		x1 = (c >= 'a') && (c <= 'z');
		c  = 'H';
		x2 = (c >= 'a') && (c <= 'z');
		System.out.println("cが'h'の時,論理式は " + x1);
		System.out.println("cが'H'の時,論理式は " + x2);
	}
}
		
[問2]整数データの上位 4 ビットと下位 4 ビットを,それぞれ 2 進数 4 ビットの正の整数とみなし,それらを加えて結果を出力するプログラムを書け.
/****************************/
/* 上位及び下位4ビットの和 */
/*      coded by Y.Suganuma */
/****************************/
import java.io.*;

public class Test {
	public static void main(String args[]) throws IOException
	{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int n, low, up;
/*
     整数データの入力
*/
		System.out.print("整数を入力して下さい ");
		n = Integer.parseInt(in.readLine());
		System.out.println("   入力された整数は " + Integer.toHexString(n));
/*
     上位及び下位4ビットの和
*/
		low = n & 0x0000000f;
		up  = n >>> 28;   // Java固有の演算子
		System.out.println("low " + low + " up " + up + " 和 " + (low+up));
	}
}
		
[問3]すべてのビットを反転した後,最上位ビットに 1 をセットするプログラムを,排他的論理和と論理和を使用して書け.
/****************************/
/* ビットの反転             */
/*      coded by Y.Suganuma */
/****************************/
import java.io.*;

public class Test {
	public static void main(String args[]) throws IOException
	{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int n, m;
/*
     整数データの入力
*/
		System.out.print("整数を入力して下さい ");
		n = Integer.parseInt(in.readLine());
		System.out.println("   入力された整数は " + Integer.toHexString(n));
/*
     ビットの反転と最上位ビットに1をセット
*/
		m = n ^ 0xffffffff;
		m = m | 0x80000000;
		System.out.println("結果 " + Integer.toHexString(m));
	}
}
		
[問4]整数データを 9 倍する演算を,ビットシフトと加算を利用して行うプログラムを書け.
/****************************/
/* 整数データを9倍         */
/*      coded by Y.Suganuma */
/****************************/
import java.io.*;

public class Test {
	public static void main(String args[]) throws IOException
	{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int n, m;
/*
     整数データの入力
*/
		System.out.print("整数を入力して下さい ");
		n = Integer.parseInt(in.readLine());
/*
     9倍
*/
		m  = n << 3;;
		m += n;
		System.out.println("結果 " + m);
	}
}
		

菅沼ホーム 演習解答例目次 本文目次 付録 索引