Løsningsforslag - oppgaver i Avsnitt B.3


Oppgave 1

Skal du bruke long må du ha: long k = -1L; og med BigInteger
må det være: BigInteger k = new BigInteger("-1");

  byte og Byte:    -1 377 ff
  short og Short:  -1 177777 ffff
  int og Integer:  -1 37777777777 ffffffff
  long og Long     -1 1777777777777777777777 ffffffffffffffff
  BigInteger:      -1 -1 -1

For BigInteger brukes det vanlig fortegn når et negativt heltall skal skrives oktalt eller heksadesimalt, dvs. tegnet - foran den oktale (eller heksadesimale) representasjonen av tallet uten fortegn. Det må være slik siden BigInteger ikke bruker et fast antall binære siffer.

Oppgave 2

  int[][] a = {{5,15,100,10},{200,5,90,0},{50,150,50,100}};

  for (int[] rad : a)
  {
    for (int k : rad) System.out.printf("  %3d", k);
    System.out.printf("%n");
  }

Bruk så direktivsetningen " %03d"

Oppgave 3

  int k = -1;
  String binær = Integer.toBinaryString(k);
  System.out.printf("%1$d %1$#o %1$#x 0b%2$s%n", k, binær);

Oppgave 4

  for (int tall = 1; tall < 32; tall++)
  {
    String binær = Integer.toBinaryString(tall);
    System.out.printf("%1$4d%1$4o%1$4x%2$7s%n", tall, binær);
  }

Oppgave 5

  byte b = 123;
  System.out.printf("%s%n", b);   // Utskrift: 123

  short s = 123;
  System.out.printf("%s%n", s);   // Utskrift: 123

  int i = -123;
  System.out.printf("%s%n", i);   // Utskrift: -123

  long l = Long.MAX_VALUE;
  System.out.printf("%s%n", l);   // Utskrift: 9223372036854775807

  BigInteger bg = new BigInteger("123");
  System.out.printf("%s%n", bg);  // Utskrift: 123