忍者ブログ

てんねんのSE備忘録

てんねんのためのSE備忘録 間違い指摘いただけると助かります また、拍手なんかしていただけると喜びます

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

全般:文字コード

なんか文字コードのこと忘れてるようなので復習で~す

●Unicode
<1>アメリカのコンピュータ会社The Unicode Consoritumが作成
<2>2バイトの文字コード
<3>世界で使用できるようにするために開発
<4>データを入出力するときに用いるフォーマットをUTF(Unicode Text Format)と言う
<5>javaの文字コード(UTF-8)

●ASCIIコード
<1>American Standard Code for Information Interchangeの略
<2>1バイトの文字コード(実際は7ビット)
<3>文字等を整数に変換する事で、処理や保存を行うのが簡単
<4>日本工業規格に規定されたものはJIS X 0201
<5>ASCIIコードの128文字の内、94文字がアルファベット・数字・記号などの印刷可能な文字、残りの34文字は空白文字(SP)と制御記号

●シフトJISコード
<1>Microsoft社によって作成(JISの規格ではない)
<2>1バイトの日本語コード
<3>マルチバイト文字と1バイト文字を切り替えることなく扱えるようにした形式
<4>WindowsやMacintoshで使用

※マルチバイト文字
1文字のバイト数が可変であるような体系

●EUCコード
<1>Extended Unix Codeの略
<2>1バイトの日本語コード
<3>日本語対応UNIXワークステーションの内部コード
<4>可変長コードと固定長コードの2種類(一般的には可変長コード[圧縮])

●参考サイト
http://www.kanzaki.com/docs/jcode.html#euc

拍手[0回]

PR

java:要素数の違う多次元配列

なにやら各次元で要素数の違う多次元配列があるそうな
調べてみました

●例
int a[][] = {
    {1,2,3},
    {4,5},
    {6}
};

●各次元でlengthを呼び出せる
a[0].length; //=3
a[1].length; //=2
a[2].length; //=1

これは使う場面はあるのだろうか…

拍手[1回]

全般:基本データ型

全般:基本データ型

今回はデータ型の復習~

●整数型
<1>byte      : 8ビット  = -128~127
<2>short    : 16ビット = -32768~32767
<3>int         : 32ビット = -2147483648~2147483647
<4>long      : 64ビット = -9223372036854775808~9223372036854775807

⇒範囲の計算方法は…
nビットの場合 -2の(n-1)乗 ~ 2の(n-1)乗-1

⇒容量の関係は…
byte  ×2   = short
short×2  = int
int     ×2   = long

※longでは数字の後に「l」を付ける
例 long a = 123l;

●実数型
<1>float     : 32ビット = ±3.4×10の38乗~±1.4×10の-45乗
<2>double: 64ビット = ±1.8×10の308乗~±4.9×10の-324乗

⇒各ビットの役割は…
<1>float      符号部:1ビット 指数部:8ビット   仮数部:23ビット  = 合計32ビット
<2>double 符号部:1ビット 指数部:11ビット 仮数部:52ビット = 合計64ビット

⇒範囲の計算方法は…
<1>float      (-1)の(符号部)乗 × 2の(指数部-127)乗 × (1+(仮数部))
<2>double (-1)の(符号部)乗 × 2の(指数部-1023)乗 × (1+(仮数部))

⇒容量の関係は…
float×2 = double

⇒下駄履き表現 = floatの「-127」 doubleの「-1023」
指数部をあわせる
仮数部同士を加減乗除するだけになる = 計算が簡単

例えばfloatの場合 -127 = 8ビット分 = 指数部分となっている
このことによって、指数部の先頭ビットが1のとき1.0を表すようになる(128-127)

※floatでは数字の後に「f」を付ける
例 float a = 123f;

拍手[0回]

全般:srcとdst

全般:srcとdst

srcとdstって略語なんですね…
そんなんも知らんなんてアホすぎますねw

src = source             源
dst = destination     目的地

拍手[135回]

C++:関数を引数に設定する

C++:関数を引数に設定する

関数を引数に設定することで
関数に汎用性が大きくなる

ということで
今回は関数を引数に設定する方法です

さっそく、Cでの例を挙げます

●例1(Cの場合)
int funcA(int a, int b,int (*funcB)(int,int)){
    
    int c = funcB(a,b);
    
    return c;
    
}

funcBには引数にint型の変数2つを取ることができ、intを返す関数が入ります

●インラインとは何??

C++ではもっとオーバーヘッドを無くす(速度を上げる)方法があるそうで
それがインライン関数みたいです
インライン=マクロみたいなものです

⇒基本的な書き方
inline int A(int x){
    return x;
}
⇒注意
コンパイル時にプリプロセッサにより全て展開されるので実体は使用分だけ存在してしまう
つまり、コンパイル後の実質的なメモリが多くなる??ってな感じだと思います

と、C++の場合に入る前にもう1つ知識がいるようでして…

●テンプレート関数(template<引数の設定>)とは??

どんな型でも1つの関数で扱えるようにする仕組みを持っているのが
テンプレート関数だそうです

template<class T>
T max(const T& a, const T& b)
{
    return ( a > b ) ? ( a ) : ( b );
}

※class = typenameでも良い

例えばmax( 100, 150 );で上記のテンプレート関数を呼び出した場合
int max(const int& a, const int& b)
{
    return ( a > b ) ? ( a ) : ( b );
}

となるみたいです
知識無さ過ぎですねw
勉強しまっす

では、C++の場合の例に移ります

●例2(C++の場合) インライン展開

template<typename STRUCT, int SIZE>
void initialize(int matrix[SIZE][SIZE])
{
    for(int row = 0; row < SIZE; ++row)
    {
        for(int col = 0; col < SIZE; ++col)
        {
            matrix[row][col] = STRUCT::generate(row, col);
        }
    }
}

struct struct_A
{
    inline static int func(int, int)
    {
        return 0;
    }
};

struct struct_B
{
    inline static int func(int row, int col)
    {
        return (row == col) ? 1 : 0;
    }
};

int main(int, char* [])
{
    int m[10][10];

    initialize<sturct_A>(m);
    initialize<sturct_B>(m);

    return 0;
}

※initializeのtemplateのSIZEを呼び出していませんが
引数に配列を入れた時点で設定されるようですね

構造体のstruct_Aとstruct_Bどちらを選択するかによって
関数の内容が変わるようになっています

●まとめ
Cの記述は楽
C++の記述は面倒だけど、プログラムの速度アップにつながる
(ただし、メモリが大きくなる)

拍手[0回]

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

フリーエリア

最新CM

最新TB

プロフィール

HN:
てんねん
性別:
非公開

バーコード

ブログ内検索

P R

カウンター

忍者アナライズ