殆どというか、Cでしか書いていないのはご愛嬌でw source カタカナ#include <string> #include <iostream> int main() { char kanaa[] = "あい"; char hiragana[] = "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん ゝゞ"; char katakana[] = "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヽヾ"; int i,j; printf("sizeof(char): %d\n", (int)sizeof(char)); printf("sizeof(unsigned char): %d\n", (int)sizeof(unsigned char)); printf("sizeof(short int): %d\n", (int)sizeof(short int)); printf("sizeof(unsigned short int): %d\n", (int)sizeof(unsigned short int)); printf("sizeof(int): %d\n", (int)sizeof(int)); printf("sizeof(unsigned int): %d\n", (int)sizeof(unsigned int)); printf("sizeof(long int): %d\n", (int)sizeof(long int)); printf("sizeof(unsigned long int): %d\n", (int)sizeof(unsigned long int)); printf("sizeof(long long int): %d\n", (int)sizeof(long long int)); printf("sizeof(unsigned long long int): %d\n", (int)sizeof(unsigned long long int)); printf("sizeof(float): %d\n", (int)sizeof(float)); // printf("sizeof(unsigned float): %d\n", (int)sizeof(unsigned float)); printf("sizeof(double): %d\n", (int)sizeof(double)); // printf("sizeof(unsigned double): %d\n", (int)sizeof(unsigned double)); printf("sizeof \"%s\": %d\n", (char*) &kanaa, (int) sizeof(kanaa)); for( i=0 ; i<= (int) sizeof(kanaa) ; i++){ printf(" , %2x", kanaa[i]); } printf("\n\n"); printf("%s\n", (char*) &hiragana); printf("%s\n", (char*) &katakana); if( (int)sizeof(hiragana) == (int)sizeof(katakana)){ for( i=0 ; i< (int)sizeof(hiragana) ; i+=3){ printf("\"%c%c%c\" - \"%c%c%c\" = ", hiragana[i], hiragana[i+1], hiragana[i+2], katakana[i], katakana[i+1], katakana[i+2]); for( j=0 ; j<=2 ; j++){ printf(" %2x ,", katakana[i+j] - hiragana[i+j] ); } printf("\n"); for(j=0 ; j<=1 ; j++){ printf("%d\n",j); if(j==0){ if(katakana[i+j] != (char)0xe3){ printf("not top 1 byte was 0xe3!\n"); break; } } if(j==1){ printf("in 2 byte.\n"); if(katakana[i+j] == (char)0x82){ printf("katakana[i+j+1] & 0xe0(11100000) : hex: %2x, int: %u\n", (char)katakana[i+j+1] & (char)0xe0, (char)katakana[i+j+1] & (char)0xe0); printf("katakana[i+j+1] >> 5 : hex: %2x, int: %u\n", katakana[i+j+1] >> 5, katakana[i+j+1] >> 5); if( (katakana[i+j+1] & (char)0xe0) == (char)0xa0 && katakana[i+j+1] != (char)0xa0){ // in [ァ]-[タ] printf("1: [ァ]-[タ] : %c%c%c ->char[2]-1 char[3] ^ 0x20 = %c%c%c\n\n", katakana[i], katakana[i+1], katakana[i+2], katakana[i], katakana[i+1] - 1, katakana[i+2] ^ 0x20); } } if(katakana[i+j] == (char)0x83){ printf("katakana[i+j+1] & 0xe0(11100000) : hex: %2x, int: %u\n", katakana[i+j+1] & (char)0xe0, katakana[i+j+1] & (char)0xe0); printf("katakana[i+j+1] >> 5 : hex: %2x, int: %u\n", katakana[i+j+1] >> 5, katakana[i+j+1] >> 5); if( (katakana[i+j+1] & (char)0xe0) == (char)0x80 ){ // in [ダ]-[ミ] printf("2: [ダ]-[ミ] : %c%c%c ->char[2]-2 char[3] ^ 0x20 = %c%c%c\n\n", katakana[i], katakana[i+1], katakana[i+2], katakana[i], katakana[i+1] - 2, katakana[i+2] ^ 0x20); } if( (katakana[i+j+1] & (char)0xe0) == (char)0xa0 && katakana[i+j+1] < (char)0xb4 ){ // in [ム]-[ン] printf("3: [ム]-[ン]: %c%c%c ->char[2]-1 char[3] ^ 0x20 = %c%c%c\n\n", katakana[i], katakana[i+1], katakana[i+2], katakana[i], katakana[i+1] - 1, katakana[i+2] ^ 0x20); } } } } printf("\n"); } }else{ printf("invalid compare string.\n"); } return 0; } 実行結果 カタカナ$ g++ -m32 kanatest1.cpp -o kanatest1 $ ./kanatest1 sizeof(char): 1 sizeof(unsigned char): 1 sizeof(short int): 2 sizeof(unsigned short int): 2 sizeof(int): 4 sizeof(unsigned int): 4 sizeof(long int): 4 sizeof(unsigned long int): 4 sizeof(long long int): 8 sizeof(unsigned long long int): 8 sizeof(float): 4 sizeof(double): 8 sizeof "あい": 7 , ffffffe3 , ffffff81 , ffffff82 , ffffffe3 , ffffff81 , ffffff84 , 0 , 7 ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん ゝゞ ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヽヾ "ぁ" - "ァ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ァ ->char[2]-1 char[3] ^ 0x20 = ぁ "あ" - "ア" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ア ->char[2]-1 char[3] ^ 0x20 = あ "ぃ" - "ィ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ィ ->char[2]-1 char[3] ^ 0x20 = ぃ "い" - "イ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : イ ->char[2]-1 char[3] ^ 0x20 = い "ぅ" - "ゥ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ゥ ->char[2]-1 char[3] ^ 0x20 = ぅ "う" - "ウ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ウ ->char[2]-1 char[3] ^ 0x20 = う "ぇ" - "ェ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ェ ->char[2]-1 char[3] ^ 0x20 = ぇ "え" - "エ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : エ ->char[2]-1 char[3] ^ 0x20 = え "ぉ" - "ォ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ォ ->char[2]-1 char[3] ^ 0x20 = ぉ "お" - "オ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : オ ->char[2]-1 char[3] ^ 0x20 = お "か" - "カ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : カ ->char[2]-1 char[3] ^ 0x20 = か "が" - "ガ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ガ ->char[2]-1 char[3] ^ 0x20 = が "き" - "キ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : キ ->char[2]-1 char[3] ^ 0x20 = き "ぎ" - "ギ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ギ ->char[2]-1 char[3] ^ 0x20 = ぎ "く" - "ク" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ク ->char[2]-1 char[3] ^ 0x20 = く "ぐ" - "グ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : グ ->char[2]-1 char[3] ^ 0x20 = ぐ "け" - "ケ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ケ ->char[2]-1 char[3] ^ 0x20 = け "げ" - "ゲ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ゲ ->char[2]-1 char[3] ^ 0x20 = げ "こ" - "コ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : コ ->char[2]-1 char[3] ^ 0x20 = こ "ご" - "ゴ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ゴ ->char[2]-1 char[3] ^ 0x20 = ご "さ" - "サ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : サ ->char[2]-1 char[3] ^ 0x20 = さ "ざ" - "ザ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ザ ->char[2]-1 char[3] ^ 0x20 = ざ "し" - "シ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : シ ->char[2]-1 char[3] ^ 0x20 = し "じ" - "ジ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ジ ->char[2]-1 char[3] ^ 0x20 = じ "す" - "ス" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ス ->char[2]-1 char[3] ^ 0x20 = す "ず" - "ズ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ズ ->char[2]-1 char[3] ^ 0x20 = ず "せ" - "セ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : セ ->char[2]-1 char[3] ^ 0x20 = せ "ぜ" - "ゼ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ゼ ->char[2]-1 char[3] ^ 0x20 = ぜ "そ" - "ソ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ソ ->char[2]-1 char[3] ^ 0x20 = そ "ぞ" - "ゾ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : ゾ ->char[2]-1 char[3] ^ 0x20 = ぞ "た" - "タ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 1: [ァ]-[タ] : タ ->char[2]-1 char[3] ^ 0x20 = た "だ" - "ダ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ダ ->char[2]-2 char[3] ^ 0x20 = だ "ち" - "チ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : チ ->char[2]-2 char[3] ^ 0x20 = ち "ぢ" - "ヂ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ヂ ->char[2]-2 char[3] ^ 0x20 = ぢ "っ" - "ッ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ッ ->char[2]-2 char[3] ^ 0x20 = っ "つ" - "ツ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ツ ->char[2]-2 char[3] ^ 0x20 = つ "づ" - "ヅ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ヅ ->char[2]-2 char[3] ^ 0x20 = づ "て" - "テ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : テ ->char[2]-2 char[3] ^ 0x20 = て "で" - "デ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : デ ->char[2]-2 char[3] ^ 0x20 = で "と" - "ト" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ト ->char[2]-2 char[3] ^ 0x20 = と "ど" - "ド" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ド ->char[2]-2 char[3] ^ 0x20 = ど "な" - "ナ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ナ ->char[2]-2 char[3] ^ 0x20 = な "に" - "ニ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ニ ->char[2]-2 char[3] ^ 0x20 = に "ぬ" - "ヌ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ヌ ->char[2]-2 char[3] ^ 0x20 = ぬ "ね" - "ネ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ネ ->char[2]-2 char[3] ^ 0x20 = ね "の" - "ノ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ノ ->char[2]-2 char[3] ^ 0x20 = の "は" - "ハ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ハ ->char[2]-2 char[3] ^ 0x20 = は "ば" - "バ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : バ ->char[2]-2 char[3] ^ 0x20 = ば "ぱ" - "パ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : パ ->char[2]-2 char[3] ^ 0x20 = ぱ "ひ" - "ヒ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ヒ ->char[2]-2 char[3] ^ 0x20 = ひ "び" - "ビ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ビ ->char[2]-2 char[3] ^ 0x20 = び "ぴ" - "ピ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ピ ->char[2]-2 char[3] ^ 0x20 = ぴ "ふ" - "フ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : フ ->char[2]-2 char[3] ^ 0x20 = ふ "ぶ" - "ブ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ブ ->char[2]-2 char[3] ^ 0x20 = ぶ "ぷ" - "プ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : プ ->char[2]-2 char[3] ^ 0x20 = ぷ "へ" - "ヘ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ヘ ->char[2]-2 char[3] ^ 0x20 = へ "べ" - "ベ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ベ ->char[2]-2 char[3] ^ 0x20 = べ "ぺ" - "ペ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ペ ->char[2]-2 char[3] ^ 0x20 = ぺ "ほ" - "ホ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ホ ->char[2]-2 char[3] ^ 0x20 = ほ "ぼ" - "ボ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ボ ->char[2]-2 char[3] ^ 0x20 = ぼ "ぽ" - "ポ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ポ ->char[2]-2 char[3] ^ 0x20 = ぽ "ま" - "マ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : マ ->char[2]-2 char[3] ^ 0x20 = ま "み" - "ミ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 2: [ダ]-[ミ] : ミ ->char[2]-2 char[3] ^ 0x20 = み "む" - "ム" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ム ->char[2]-1 char[3] ^ 0x20 = む "め" - "メ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: メ ->char[2]-1 char[3] ^ 0x20 = め "も" - "モ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: モ ->char[2]-1 char[3] ^ 0x20 = も "ゃ" - "ャ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ャ ->char[2]-1 char[3] ^ 0x20 = ゃ "や" - "ヤ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ヤ ->char[2]-1 char[3] ^ 0x20 = や "ゅ" - "ュ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ュ ->char[2]-1 char[3] ^ 0x20 = ゅ "ゆ" - "ユ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ユ ->char[2]-1 char[3] ^ 0x20 = ゆ "ょ" - "ョ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ョ ->char[2]-1 char[3] ^ 0x20 = ょ "よ" - "ヨ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ヨ ->char[2]-1 char[3] ^ 0x20 = よ "ら" - "ラ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ラ ->char[2]-1 char[3] ^ 0x20 = ら "り" - "リ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: リ ->char[2]-1 char[3] ^ 0x20 = り "る" - "ル" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ル ->char[2]-1 char[3] ^ 0x20 = る "れ" - "レ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: レ ->char[2]-1 char[3] ^ 0x20 = れ "ろ" - "ロ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ロ ->char[2]-1 char[3] ^ 0x20 = ろ "ゎ" - "ヮ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ヮ ->char[2]-1 char[3] ^ 0x20 = ゎ "わ" - "ワ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ワ ->char[2]-1 char[3] ^ 0x20 = わ "ゐ" - "ヰ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ヰ ->char[2]-1 char[3] ^ 0x20 = ゐ "ゑ" - "ヱ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ヱ ->char[2]-1 char[3] ^ 0x20 = ゑ "を" - "ヲ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ヲ ->char[2]-1 char[3] ^ 0x20 = を "ん" - "ン" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 3: [ム]-[ン]: ン ->char[2]-1 char[3] ^ 0x20 = ん " " - "ヴ" = 0 , 3 , 34 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 " " - "ヵ" = 0 , 3 , 35 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 " " - "ヶ" = 0 , 3 , 36 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 "ゝ" - "ヽ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 "ゞ" - "ヾ" = 0 , 1 , 20 , 0 1 in 2 byte. katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 "・ - "・ = 0 , 0 , 0 , 0 not top 1 byte was 0xe3! source ひらがな#include <stdio.h> int main() { char kanaa[] = "あい"; char hiragana[] = "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん ゝゞ"; char katakana[] = "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヽヾ"; int i,j; printf("sizeof(char): %d\n", (int)sizeof(char)); printf("sizeof(unsigned char): %d\n", (int)sizeof(unsigned char)); printf("sizeof(short int): %d\n", (int)sizeof(short int)); printf("sizeof(unsigned short int): %d\n", (int)sizeof(unsigned short int)); printf("sizeof(int): %d\n", (int)sizeof(int)); printf("sizeof(unsigned int): %d\n", (int)sizeof(unsigned int)); printf("sizeof(long int): %d\n", (int)sizeof(long int)); printf("sizeof(unsigned long int): %d\n", (int)sizeof(unsigned long int)); printf("sizeof(long long int): %d\n", (int)sizeof(long long int)); printf("sizeof(unsigned long long int): %d\n", (int)sizeof(unsigned long long int)); printf("sizeof(float): %d\n", (int)sizeof(float)); // printf("sizeof(unsigned float): %d\n", (int)sizeof(unsigned float)); printf("sizeof(double): %d\n", (int)sizeof(double)); // printf("sizeof(unsigned double): %d\n", (int)sizeof(unsigned double)); printf("sizeof \"%s\": %d\n", (char*) &kanaa, (int) sizeof(kanaa)); for( i=0 ; i<= (int) sizeof(kanaa) ; i++){ printf(" , %2x", kanaa[i]); } printf("\n\n"); printf("%s\n", (char*) &hiragana); printf("%s\n", (char*) &katakana); if( (int)sizeof(hiragana) == (int)sizeof(katakana)){ for( i=0 ; i< (int)sizeof(hiragana) ; i+=3){ printf("\"%c%c%c\" - \"%c%c%c\" = ", hiragana[i], hiragana[i+1], hiragana[i+2], katakana[i], katakana[i+1], katakana[i+2]); for( j=0 ; j<=2 ; j++){ printf(" %2x ,", katakana[i+j] - hiragana[i+j] ); } printf("\n"); for(j=0 ; j<=1 ; j++){ printf("%d\n",j); if(j==0){ if(hiragana[i+j] != (char)0xe3){ printf("not top 1 byte was 0xe3!\n"); break; } } if(j==1){ printf("in 2 byte.\n"); if(hiragana[i+j] == (char)0x81){ printf("hiragana[i+j+1] & 0xe0(11100000) : hex: %2x, int: %u\n", (char)hiragana[i+j+1] & (char)0xe0, (char)hiragana[i+j+1] & (char)0xe0); printf("hiragana[i+j+1] >> 5 : hex: %2x, int: %u\n", hiragana[i+j+1] >> 5, hiragana[i+j+1] >> 5); if( (hiragana[i+j+1] & (char)0xe0) == (char)0x80 && hiragana[i+j+1] != (char)0xa0){ // in [ァ]-[タ] printf("1: [ァ]-[タ] : %c%c%c ->char[2]+1 char[3] ^ 0x20 = %c%c%c\n\n", hiragana[i], hiragana[i+1], hiragana[i+2], hiragana[i], hiragana[i+1] + 1, hiragana[i+2] ^ 0x20); } if( (hiragana[i+j+1] & (char)0xe0) == (char)0xa0 ){ // in [ダ]-[ミ] printf("2: [ダ]-[ミ] : %c%c%c ->char[2]+2 char[3] ^ 0x20 = %c%c%c\n\n", hiragana[i], hiragana[i+1], hiragana[i+2], hiragana[i], hiragana[i+1] + 2, hiragana[i+2] ^ 0x20); } } if(hiragana[i+j] == (char)0x82){ printf("hiragana[i+j+1] & 0xe0(11100000) : hex: %2x, int: %u\n", hiragana[i+j+1] & (char)0xe0, hiragana[i+j+1] & (char)0xe0); printf("hiragana[i+j+1] >> 5 : hex: %2x, int: %u\n", hiragana[i+j+1] >> 5, hiragana[i+j+1] >> 5); if( (hiragana[i+j+1] & (char)0xe0) == (char)0x80 && hiragana[i+j+1] < (char)0x94 ){ // in [ム]-[ン] printf("3: [ム]-[ン]: %c%c%c ->char[2]+1 char[3] ^ 0x20 = %c%c%c\n\n", hiragana[i], hiragana[i+1], hiragana[i+2], hiragana[i], hiragana[i+1] + 1, hiragana[i+2] ^ 0x20); } } } } printf("\n"); } }else{ printf("invalid compare string.\n"); } return 0; } 実行結果 ひらがなsizeof(char): 1 sizeof(unsigned char): 1 sizeof(short int): 2 sizeof(unsigned short int): 2 sizeof(int): 4 sizeof(unsigned int): 4 sizeof(long int): 8 sizeof(unsigned long int): 8 sizeof(long long int): 8 sizeof(unsigned long long int): 8 sizeof(float): 4 sizeof(double): 8 sizeof "あい": 7 , ffffffe3 , ffffff81 , ffffff82 , ffffffe3 , ffffff81 , ffffff84 , 0 , 0 ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん ゝゞ ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヽヾ "ぁ" - "ァ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ぁ ->char[2]+1 char[3] ^ 0x20 = ァ "あ" - "ア" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : あ ->char[2]+1 char[3] ^ 0x20 = ア "ぃ" - "ィ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ぃ ->char[2]+1 char[3] ^ 0x20 = ィ "い" - "イ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : い ->char[2]+1 char[3] ^ 0x20 = イ "ぅ" - "ゥ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ぅ ->char[2]+1 char[3] ^ 0x20 = ゥ "う" - "ウ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : う ->char[2]+1 char[3] ^ 0x20 = ウ "ぇ" - "ェ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ぇ ->char[2]+1 char[3] ^ 0x20 = ェ "え" - "エ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : え ->char[2]+1 char[3] ^ 0x20 = エ "ぉ" - "ォ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ぉ ->char[2]+1 char[3] ^ 0x20 = ォ "お" - "オ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : お ->char[2]+1 char[3] ^ 0x20 = オ "か" - "カ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : か ->char[2]+1 char[3] ^ 0x20 = カ "が" - "ガ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : が ->char[2]+1 char[3] ^ 0x20 = ガ "き" - "キ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : き ->char[2]+1 char[3] ^ 0x20 = キ "ぎ" - "ギ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ぎ ->char[2]+1 char[3] ^ 0x20 = ギ "く" - "ク" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : く ->char[2]+1 char[3] ^ 0x20 = ク "ぐ" - "グ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ぐ ->char[2]+1 char[3] ^ 0x20 = グ "け" - "ケ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : け ->char[2]+1 char[3] ^ 0x20 = ケ "げ" - "ゲ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : げ ->char[2]+1 char[3] ^ 0x20 = ゲ "こ" - "コ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : こ ->char[2]+1 char[3] ^ 0x20 = コ "ご" - "ゴ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ご ->char[2]+1 char[3] ^ 0x20 = ゴ "さ" - "サ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : さ ->char[2]+1 char[3] ^ 0x20 = サ "ざ" - "ザ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ざ ->char[2]+1 char[3] ^ 0x20 = ザ "し" - "シ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : し ->char[2]+1 char[3] ^ 0x20 = シ "じ" - "ジ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : じ ->char[2]+1 char[3] ^ 0x20 = ジ "す" - "ス" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : す ->char[2]+1 char[3] ^ 0x20 = ス "ず" - "ズ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ず ->char[2]+1 char[3] ^ 0x20 = ズ "せ" - "セ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : せ ->char[2]+1 char[3] ^ 0x20 = セ "ぜ" - "ゼ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ぜ ->char[2]+1 char[3] ^ 0x20 = ゼ "そ" - "ソ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : そ ->char[2]+1 char[3] ^ 0x20 = ソ "ぞ" - "ゾ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : ぞ ->char[2]+1 char[3] ^ 0x20 = ゾ "た" - "タ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 1: [ァ]-[タ] : た ->char[2]+1 char[3] ^ 0x20 = タ "だ" - "ダ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : だ ->char[2]+2 char[3] ^ 0x20 = ダ "ち" - "チ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ち ->char[2]+2 char[3] ^ 0x20 = チ "ぢ" - "ヂ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ぢ ->char[2]+2 char[3] ^ 0x20 = ヂ "っ" - "ッ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : っ ->char[2]+2 char[3] ^ 0x20 = ッ "つ" - "ツ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : つ ->char[2]+2 char[3] ^ 0x20 = ツ "づ" - "ヅ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : づ ->char[2]+2 char[3] ^ 0x20 = ヅ "て" - "テ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : て ->char[2]+2 char[3] ^ 0x20 = テ "で" - "デ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : で ->char[2]+2 char[3] ^ 0x20 = デ "と" - "ト" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : と ->char[2]+2 char[3] ^ 0x20 = ト "ど" - "ド" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ど ->char[2]+2 char[3] ^ 0x20 = ド "な" - "ナ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : な ->char[2]+2 char[3] ^ 0x20 = ナ "に" - "ニ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : に ->char[2]+2 char[3] ^ 0x20 = ニ "ぬ" - "ヌ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ぬ ->char[2]+2 char[3] ^ 0x20 = ヌ "ね" - "ネ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ね ->char[2]+2 char[3] ^ 0x20 = ネ "の" - "ノ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : の ->char[2]+2 char[3] ^ 0x20 = ノ "は" - "ハ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : は ->char[2]+2 char[3] ^ 0x20 = ハ "ば" - "バ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ば ->char[2]+2 char[3] ^ 0x20 = バ "ぱ" - "パ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ぱ ->char[2]+2 char[3] ^ 0x20 = パ "ひ" - "ヒ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ひ ->char[2]+2 char[3] ^ 0x20 = ヒ "び" - "ビ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : び ->char[2]+2 char[3] ^ 0x20 = ビ "ぴ" - "ピ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ぴ ->char[2]+2 char[3] ^ 0x20 = ピ "ふ" - "フ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ふ ->char[2]+2 char[3] ^ 0x20 = フ "ぶ" - "ブ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ぶ ->char[2]+2 char[3] ^ 0x20 = ブ "ぷ" - "プ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ぷ ->char[2]+2 char[3] ^ 0x20 = プ "へ" - "ヘ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : へ ->char[2]+2 char[3] ^ 0x20 = ヘ "べ" - "ベ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : べ ->char[2]+2 char[3] ^ 0x20 = ベ "ぺ" - "ペ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ぺ ->char[2]+2 char[3] ^ 0x20 = ペ "ほ" - "ホ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ほ ->char[2]+2 char[3] ^ 0x20 = ホ "ぼ" - "ボ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ぼ ->char[2]+2 char[3] ^ 0x20 = ボ "ぽ" - "ポ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ぽ ->char[2]+2 char[3] ^ 0x20 = ポ "ま" - "マ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : ま ->char[2]+2 char[3] ^ 0x20 = マ "み" - "ミ" = 0 , 2 , ffffffe0 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293 2: [ダ]-[ミ] : み ->char[2]+2 char[3] ^ 0x20 = ミ "む" - "ム" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: む ->char[2]+1 char[3] ^ 0x20 = ム "め" - "メ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: め ->char[2]+1 char[3] ^ 0x20 = メ "も" - "モ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: も ->char[2]+1 char[3] ^ 0x20 = モ "ゃ" - "ャ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ゃ ->char[2]+1 char[3] ^ 0x20 = ャ "や" - "ヤ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: や ->char[2]+1 char[3] ^ 0x20 = ヤ "ゅ" - "ュ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ゅ ->char[2]+1 char[3] ^ 0x20 = ュ "ゆ" - "ユ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ゆ ->char[2]+1 char[3] ^ 0x20 = ユ "ょ" - "ョ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ょ ->char[2]+1 char[3] ^ 0x20 = ョ "よ" - "ヨ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: よ ->char[2]+1 char[3] ^ 0x20 = ヨ "ら" - "ラ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ら ->char[2]+1 char[3] ^ 0x20 = ラ "り" - "リ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: り ->char[2]+1 char[3] ^ 0x20 = リ "る" - "ル" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: る ->char[2]+1 char[3] ^ 0x20 = ル "れ" - "レ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: れ ->char[2]+1 char[3] ^ 0x20 = レ "ろ" - "ロ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ろ ->char[2]+1 char[3] ^ 0x20 = ロ "ゎ" - "ヮ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ゎ ->char[2]+1 char[3] ^ 0x20 = ヮ "わ" - "ワ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: わ ->char[2]+1 char[3] ^ 0x20 = ワ "ゐ" - "ヰ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ゐ ->char[2]+1 char[3] ^ 0x20 = ヰ "ゑ" - "ヱ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ゑ ->char[2]+1 char[3] ^ 0x20 = ヱ "を" - "ヲ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: を ->char[2]+1 char[3] ^ 0x20 = ヲ "ん" - "ン" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 3: [ム]-[ン]: ん ->char[2]+1 char[3] ^ 0x20 = ン " " - "ヴ" = 0 , 3 , 34 , 0 1 in 2 byte. " " - "ヵ" = 0 , 3 , 35 , 0 1 in 2 byte. " " - "ヶ" = 0 , 3 , 36 , 0 1 in 2 byte. "ゝ" - "ヽ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 "ゞ" - "ヾ" = 0 , 1 , 20 , 0 1 in 2 byte. hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292 "" - "ヨ" = 0 , ffffffd6 , 1e , 0 not top 1 byte was 0xe3! |