--*- coding: utf-8; -*-- INF2270 Oppgaver uke 10 (7.-11.3.2011) Oppgave 1 Les om Unicode og UTF-8 i kompendiet. Skriv C-funksjonen int utf8_n_bytes (unsigned int c) som returnerer antall byte man trenger for å lagre Unicode-tegnet c. Testprogram #include extern int utf8_n_bytes (unsigned int c); unsigned int c[] = { 0, 0x24, 0xA2, 0x20AC, 0x24B62 }; int main (void) { int c_len = (sizeof(c) / sizeof(unsigned int)), i; for (i = 0; i < c_len; ++i) printf("0x%06x trenger %d byte\n", c[i], utf8_n_bytes(c[i])); return 0; } skriver ut 0x000000 trenger 1 byte 0x000024 trenger 1 byte 0x0000a2 trenger 2 byte 0x0020ac trenger 3 byte 0x024b62 trenger 4 byte Oppgave 2 Skriv x86-funksjonen 'n_ones': int n_ones (unsigned int v) som finner antall 1-er-bit i v. Testprogrammet #include extern int n_ones (unsigned int v); int main (void) { unsigned int i; for (i = 0; i <= 100; i += 13) printf("0x%02x har %d 1-er-bit\n", i, n_ones(i)); return 0; } skriver ut 0x00 har 0 1-er-bit 0x0d har 3 1-er-bit 0x1a har 3 1-er-bit 0x27 har 4 1-er-bit 0x34 har 3 1-er-bit 0x41 har 2 1-er-bit 0x4e har 4 1-er-bit 0x5b har 5 1-er-bit Hint: Hvordan kan man enkelt se på bit etter bit i et register?