練習問題の答え 変数の型と初期値 unsigned char A unsigned char B char C char D = = = = 式 結果 D = A & B A: B: D: D = A | B A: B: D: 3; (16進 0x03, 2進 0000 0011) 65; (16進 0x41, 2進 0100 0001) -4; (16進 0xFC, 2進 1111 1100) 0; 1 練習問題の答え 変数の型と初期値 unsigned char A unsigned char B char C char D = = = = 3; (16進 0x03, 2進 0000 0011) 65; (16進 0x41, 2進 0100 0001) -4; (16進 0xFC, 2進 1111 1100) 0; 式 結果 D = A & B A: 0000 B: 0100 D: 0000 D = A | B A: 0000 B: 0100 D: 0100 0011 0001 0001 0011 0001 0011 (0x03, 3) (0x41, 65) (0x01, 1) (0x03, 3) (0x41, 65) (0x43, 67) 2 練習問題の答え 式 結果 D=A^B A: B: D: D = B << 2 B: D: D = A >> 3 A: D: 3 練習問題の答え 式 結果 D=A^B A: 0000 0011 (0x03, B: 0100 0001 (0x41, D: 0100 0010 (0x42, 3) 65) 66) D = B << 2 B: 0100 0001 (0x41, D: 0000 0100 (0x04, 65) 4) D = A >> 3 A: 0000 0011 (0x03, D: 0000 0000 (0x00, 3) 0) 4 練習問題の答え 式 結果 D = C >> 3 C: D: D = ~A A: D: A >>= 2 A: A: ←実行前 ←実行後 5 練習問題の答え 式 結果 D = C >> 3 C: 1111 1100 (0xFC, D: 1111 1111 (0xFF, -4) -1) D = ~A A: 0000 0011 (0x03, D: 1111 1100 (0xFC, 3) -4) A >>= 2 A: 0000 0011 (0x03, A: 0000 0000 (0x00, 3)←実行前 0)←実行後 6 画像バッファの様子 → i pImage xsize ysize level pBuffer 256 192 255 ↓ j pImage->pBuffer[0][0] → i ↓ j ysize個 pImage->pBuffer[j][i] pImage->pBuffer[j] xsize個 7 画像の90度回転 ipRotateImage [0][0] [0][ysize – 1] → i ↓ j xsize個 ysize個 xsize個 ysize個 関数内で作業用の画像バッファメモリを確保し, 順に画素を埋めていけばよい. iioMallocImageBuffer iioFreeImageBuffer 8 画素のビットマスク ipBitMask pImage->pBuffer[0][0] → i ↓ j 1画素ずつ処理していく 1画素はR,G,Bから成る構造体で表現している → R,G,Bのそれぞれに対して処理を行う 9 画素のビットマスク ipBitMask pImage->pBuffer[j][i].r &= 0xC0; pImage->pBuffer[j][i].g &= 0xC0; pImage->pBuffer[j][i].b &= 0xC0; R 64 R 100 01100100 G 150 10010110 B 125 0xC0との &演算 01000000 2進表現で 1100 0000 下位6ビットが0なので ビットごとのAND演算 をすると,下位6ビット が0にマスクされる. G 128 10000000 B 64 10 画素のビットマスク ipBitMask pImage->pBuffer[j][i].r &= 0xC0; pImage->pBuffer[j][i].g &= 0xC0; pImage->pBuffer[j][i].b &= 0xC0; サンプルプログラム3: 各画素の下位”6”ビットを0でマスク→0xC0との&演算 演習課題: 各画素の下位”4”ビットを0でマスク →何を使えばよい か? 11
© Copyright 2024 ExpyDoc