C言語
倍精度浮動小数点数のおさらいから。 フォーマット 符号 指数部 仮数部 1 11 52 \[ val = (-1)^{s} \cdot (1 + f \cdot 2^{-52}) \cdot 2^{e - 1023} \] 例: 0.75 \[ 0.75 = (-1)^{0_{(2)}} \cdot (1 + 100000000000000000000000000000000000000000000000000…
概要 C 言語をコンパイルするために、コンパイラーが必要となる。 コンパイラーはgccやclangやbccというものがあるが、Windowsでは少し扱いにくい。 そのため、MinGW などをインストールして使うこともあるが、今回は WSL2 を用いた環境の構築方法を紹介する…
書いたことがあるプログラミング言語を紹介する。 C言語 まず、C言語。 C言語は高校からやり始めたけど、大学の講義で本格的に始めて今ではよく書く言語ベスト3の言語。 Arduino(電子工作で使うマイコンボード)でもCライクな言語を使う。 ポインタとか構造体…
アクセサを定義する アクセサとは アクセサとは、インスタンス変数に対して読み書きするものです。 def hoge @hoge end クラス内で上のように定義すると、インスタンス変数が示すものを読み込むことができます。 def hoge= val @hoge = val end とクラスで定…
クラスを作る // hoge.c #include <stdio.h> #include <ruby.h> VALUE cHoge; static VALUE hoge_func(VALUE obj){ puts("Hello, world"); return Qtrue; } void Init_hoge(void){ cHoge = rb_define_class("Hoge", rb_cObject); rb_define_method(cHoge, "func", hoge_func, </ruby.h></stdio.h>…
Hello, world を書いてみる Hello, worldをC言語で書く // hoge.c #include <stdio.h> void Init_hoge(void){ puts("Hello, world!"); } extconf.rbを作る makefileを作るためにextconf.rbを作ります。 作ったら、実行してmake # extconf.rb require 'mkmf' create_ma</stdio.h>…
#include <math.h> #include <stdio.h> #define N 10000000 int main(void){ static int array[N] = {}; int i, j, k = 0, l = 0, tmp, s, flag; for(i = 2; l <= N; i++){ flag = 1; j = 0; s = sqrt(i); while(tmp = array[j++]){ if(tmp > s) break; else if (i % tmp == 0</stdio.h></math.h>…