2009-02-01から1ヶ月間の記事一覧

演習 2-10

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-10 if-else の代わりに条件式を使って、大文字を小文字に変換する関数 lower を書き直せ。 Exercise 2-10 Rewrite the function lower, which converts upper case letters to lower …

split関数: 文字列を分割して配列に格納する

C

英文の単語切り出しをしようと他言語でよくある split 関数を作ってみた。 切り出す単語数が可変バージョンと、最大個数が決まっているバージョンの2パターンを作り、それぞれの長所と短所は以下の通り。 可変バージョン 長所:配列数は動的に決まるため、…

演習 3-4

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 3-4 2の補数表現においては、われわれの itoa プログラムでは、最大の負の数、すなわち -(2wordsize-1) に等しい n の値が処理できない。なぜダメか説明せよ。また、計算機のいかんに…

できなくなったこと

久しぶりにやってみたらできなくなっていることが多い。 ピアノ 2年ほど前にあんなに練習したベートーベンのピアノソナタ悲愴の第二楽章が始めの部分しかできない。しかもその初めの部分ってのは、さらに昔、学生のころに練習して弾けるようになった箇所、…

浮動小数点のビット表現

C

共用体とビットフィールドを覚えたので、その応用。 IEEE754浮動小数点規格の単精度浮動小数点のビット表現を可視化してみる。 浮動小数点型のデータはビット演算できないので、float型とint型の共用体を使った。 実行結果はこんな感じ。 ? -5.6875 +-+-----…

演習 3-3

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 3-3 文字列 s1 中の a-z のような省略記号を、それと等価な完全リスト abc......xyz にして s2 中に展開する関数 expand(s1, s2) を書け。大文字、小文字、数字を許し、a-b-c や a-z0-9…

演習 3-2

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 3-2 改行文字やタブのような文字を目で見えるエスケープ文字 \n や \t に変換しながら、s を t にコピーするような関数 escape(s, t) を書け。switch を使うこと。逆に、エスケープ系列…

演習 2-5

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-5 文字列 s2 の任意の文字と等しい文字列 s1 の最初の文字位置を返す関数 any(s1, s2) を書け。ただし、一致する文字がなければ -1 を返す。(標準ライブラリ関数 strpbrk は同じ働き…

演習 2-4

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-4 文字列 s2 中の任意の文字に等しい文字を s1 から除去するような形の squeeze(s1, s2) を書け。 Exercise 2-4 Write an alternste version of squeeze(s1, s2) that deletes each c…

演習 2-3

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-3 16進数の文字列( 0x あるいは 0X が付いているものも含めて)をそれと同値な整数値へ変換する関数 htoi(s) を書け。許される文字は 0 から 9 と a から f および A から F である。 …

アセンブラでクイックソート

職業訓練の中でアセンブラのプログラミングをやった。課題で作ったプログラムをさらす。 プログラムの内容はアルゴリズムの定番、ソートのプログラム。 バブルソートと選択ソート、クイックソートの3パターンを作成し、今回のはクイックソート。 プロセッサ…

アセンブラで選択ソート

職業訓練の中でアセンブラのプログラミングをやった。課題で作ったプログラムをさらす。 プログラムの内容はアルゴリズムの定番、ソートのプログラム。 バブルソートと選択ソート、クイックソートの3パターンを作成し、今回のは選択ソート。 プロセッサはル…

アセンブラでバブルソート

職業訓練の中でアセンブラのプログラミングをやった。課題で作ったプログラムをさらす。 プログラムの内容はアルゴリズムの定番、ソートのプログラム。 バブルソートと選択ソート、クイックソートの3パターンを作成し、今回のはバブルソート。 プロセッサは…

演習 2-9

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-9 2の補数システムでは、x = x & (x - 1) により、x の最も右の1ビットが消える。なぜか説明せよ。この事実を使って、もっと速い bitcount プログラムを書け。 Exercise 2-9 In a t…

演習 2-8

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-8 整数 x の値を右に n ビット回転する関数 rightrot(x, n)を書け Exercise 2-8 Write a function rightrot(x, n) that returns the value of the integer x rotated to the right by…

演習 2-7

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-7 x のビット位置 p から n ビットを反転(1 を 0 、 0 を 1 にする)し、他のビットはそのままにした x を返す関数 invert(x, p, n) を書け。 Exercise 2-7 Write a function invert…

演習 2-6

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-6 位置 p から始まる n ビットを y の右端の n ビットにセットし、他のビットはそのままにした x を返す関数 setbits(x, p, n, y) を書け Exercise 2-6 Write a function setbits(x, …

10進数から2進数への変換

10進数から2進数へ変換する方法というと 2で割って行く方法がメジャーですが、僕はそのやり方が苦手なんで別の方法でやっています。 割り算方式だと、割り算を間違えたり、 出てきた 0 と 1 をどっちの順番で見たらいいのか忘れるという体たらくな人(僕)で…

職業訓練

無職になって早半年、先月から職業訓練に通っています。 「組み込みソフトウェア」ということで、μITRONをつかったプログラム開発の技術を身につけるような内容です。 そこで得た知識や、関連して考えたことなんかを書いていこうと思います。