コンピュータ(CPU)でなぜ負の整数の表現として2の補数を使うか

2の補数というのは何かという説明はWikipediaに譲るとします。

結論から言うと、CPU(ハードウェア)的には単なる符号なし整数の加算・減算を行っているだけなのに、人間側の解釈の仕方だけで正負の数の加算・減算を扱えるようにするためです。

いまCPUレジスタ1バイト長であるとします。で、16進数で符号なし整数0xFF(十進数で255)に1を足します。そうすると桁あふれが起こって結果としてこのレジスタの値は0(ゼロ)になります。

0xFF(255) + 1 = 0x100(256) = 0x00  [レジスタは1バイト長固定]

ここでです、もし、人間側が勝手に”1バイト長でのレジスタの値0xFFを-1という意味としよう”と決めたとします。なぜそんなことをするかといえば、そう解釈すると、

0xFF(-1) + 1 = 0

となり、都合が良いからです。

この調子で、0xFEを-2と勝手に解釈すれば…

0xFE(-2) + 2 =  0

おお~、よいですね。

では、符号なし整数で0xFE(254) + 1 = 0xFF(255)ですが、我々の符号付の解釈では…

0xFF(-2) + 1 = 0xFF(-1)

うまくいく!

とまぁ、こんな風に、符号付の計算だけのためのハードウェアをわざわざ用意しなくても、人間側の解釈だけで正負の数が表せるのが2の補数表現のうまみです。

いまごろ映画マトリックスの感想

マトリックスは1999年の作品だそうで、18年も前の作品なんですね。私の時代感覚では結構新しめの映画で、古めのSF映画といえば、やはりブレードランナーなんかが思い出されます。

私はこの作品が好きでブルーレイ・ディスクも持っていますし、ふと思い出しては鑑賞しています。

以下、ネタバレ全開・鑑賞経験ありを前提として書きます。

まず、ちょっと個人的なツボを列挙いたします。

リアル人間殺戮
マトリックスの中で警備員とか警察官とかいわゆる体制側(マトリックス側つまり、コンピュータ側)の治安維持の職についている人が無差別に主人公であるネオなんかに殺されていくんですね。
で、観客はそれを”スゲー”とか”カッコイイ”とか思うのがフツウとして期待されているんですが、私は「え、あの人たちだって、実体の身体がカプセルにあるんだからホントの殺人なのでは…」としばらくしてから気が付きました。
いちおう、モーフィアスが”They are hopelessly dependent on the system” (彼らは救いがたいほどシステム(マトリックス)に依存している)みたいなことを言うのですが、それでも仲間じゃないんかという感じはするんですね。
コスチュームプレイ
マトリックスにインするときは当然、仮想世界なわけで好きな服装を選べるはずなんですね。で、主人公のネオやモーフィアスなんかがキメキメの黒っぽい服装なんですね。
「いちおう、ファッション的なことにも気を配るわけね… オンライン・ゲームのアバターみたいな感じだろうか…」
リアル世界でのディスプレイに文字がダーとなっているのが慣れれば映像に見えるらしい
マトリックスの外のリアル世界でのホバー船の中でオペレーターがディスプレイを見てマトリックス内での状況を判断しているらしいんですが、あんな文字列が滝のように流れている状態を見て、頭の中にマトリックス内の情景が映像としてほんとに浮かぶのかなと思いました。
サイファーが「ああ~、慣れだよ」とかネオに言っていましたが、私は何度か繰り返しみるまで、この文字列の滝が映像に見えるという設定がのみこめませんでした。

気になるフレーズなんかもいくつもあって”There’s a difference between knowing the path and walking the path.”は特に好きですね。

オラクルはネオがThe Oneではないという宣託を下すんですが、それは、ネオがそれを聞く必要があるからオラクルは言っただけだとモーフィアスは主張して。で、改めておまえがThe Oneであるとする、”She told you exactly what you needed to hear, that’s all.”(オラクルはおまえ(ネオ)が聞く必要があることを言っただけだ)も面白いです。

私が使っている英語辞書の紹介

私がPCで使っている英語関係の辞書を紹介いたします。

現在、紙の辞書を私はほとんどまったく使っておりません。オンライン辞書をメインに使っております。
その理由は…

英単語は手本となる発音を聴けることが重要
いま英語を勉強しようと思っている方は英会話ができるようになりたい人が多いのではないでしょうか。その場合、英単語を目で見る機会より音だけで聴くことが圧倒的に多くなると思います。それなら単語の標準的な発音を手軽に聴けないのは問題外ではないでしょうか。
紙の辞書は腐る(なぜなら新しい英単語や、いままであった単語の新しい意味、用法が日々生まれている、逆に廃れる意味、用法もある)
紙の辞書はそれが出版された時点での収録単語や収録されている英単語の意味、用法で時間が止まっています。その点、オンライン辞書はそれを提供している所がやる気があるのなら、日々更新される可能性があるわけです。
紙の辞書にはリンクがない
類義語、反義語などにリンク一発で跳べる利便性は計り知れません。
紙の辞書を引くのはダルい
私が英語を読んだり、書いたり、聴いたり、話したりするときはPCを通してということが多いです。たとえば、Skypeを使った英会話レッスンなんかでも、気が向けばその場で英単語をオンライン辞書で調べることができます。

それではオンライン辞書を具体的に紹介します。

一番よく使っているオンライン辞書は、”Oxford Learner’s Dictionaries“です。無料バージョンで私は満足しています。(スマホ用のアプリもあるようです)

権威的なことを言えば、日本の皇族の留学先としても有名なオックスフォード大学による英英辞書です。
オックスフォードってイギリスじゃねぇかというかたもご安心ください。北米(アメリカ)英語とイギリス英語の両方での意味や用法を調べられますし、発音も二通り用意されております。

またなぜ英英辞書なのかというのも理由があって、いずれ詳しく説明するつもりですが、端的にいうと、ある程度、英語学習が進むと、翻訳通訳をするのでなければ日本語を使う必要がなく、英語だけで単語の概念構築するべきなのがその理由です。

善悪はファッション:だが善をもとめずにはいられない

いつごろからか、善悪の判断って時代によってもかなりちがってくるし、文化や状況によっても色々ちがいがあるなと感じていました。

結論から言うと、宇宙全部に共通する善悪なんてないのだろうな… 今ではそう思っています。生物としての善があるとするなら個体もしくは種族の繁栄につながるようなことを”善”ととらえざるを得ないでしょうと思っています。

たとえば、(奴隷制度が普通だった時代に)「万学の祖」であるアリストテレスは奴隷制度擁護論を書いています。また、ニーチェの「善悪の彼岸」なんてのもあります。


Wikipedia “善悪の彼岸“より

過去の哲学者たちが道徳性について考察するときに、批判的感覚が欠けていた疑いがあることと、とりわけキリスト教の諸前提を盲目的に受け入れていたことを、ニーチェはこの『善悪の彼岸』で非難している。


私:”この感じはファッション(服装)に似ているな…”

(ファッションも時代や文化によって左右されます。)

たとえば、私がいま日本において公道でいきなり知らない人に殴り掛かれば警察のお世話になりますし、これはどう考えても悪でしょう。

同様に、究極のファッションとして全裸で公道を歩けばやっぱり警察のお世話になります。全裸はとてもイケてるファッションとは言えないでしょう。


しかし、こんな単純な暴力の善悪でさえ色々な状況しだいであって、たとえば戦場では敵兵を殴るぐらいじゃすまなくて、殺しに行かなければこちらがやられてしまいます。

あるインターネット動画で、中東に派遣された米兵とおもわれる人が、かわいい子犬を笑いながら崖下へ投げ捨てていました。これはインターネットで炎上して当人もかなり責められたのではないでしょうか。

ただ、戦場で子犬の命を大切に思うような気持ちをキープしたまま、自分と同類の人間を殺せるでしょうか。自分と同類の人の命も軽く思えるようないわゆる”戦場ハイ”とでも言える心理状態でなければ、おそらく人格が保てないのではなかろうかと思います。

戦場における善悪(ファッション)はおのずと日常と違わざるを得ない。


ある状況・文化・時代でいわゆる悪とされていることをやればいろいろなペナルティがあるでしょう。

同様に、その環境などで受け入れられないファッションをするのはやはりいろいろな問題が起きたり不愉快な思いをすることになるのではないでしょうか。

先進国なんかでごく普通に育てば、だいたいの人の心には”良心”や”罪悪感”というものがインストールされるはずです(ファッション・センスですね)。それ以外のたとえば戦乱に苦しむ国でも我々には受け入れがたいかもしれない”良心”や”罪悪感”が育つはずです。(例えば子供はできるだけたくさんの金品を盗んで親に渡すのが親孝行(善)と考えるとか)

このいろいろな種類・形があるその人なりの”良心”に反することをしすぎると人格が荒れて結果として自分が内的、外的に種々のダメージをうけるわけです。

ここでいう良心ももちろんファッション・センスの良さ・好みでしかありえず、部外者から見ると奇妙に感じられるものかもしれません。ただ本人にとってはやはり大事です。むりにヘンテコリンなファッションをすれば自分の心にストレスがかかるのと一緒で、自分の人格に組み込まれた良心に気を使わざるを得ない。


いまから千年後にタイムスリップして、何気なしにゴキブリをスリッパで叩き潰したとします。千年後の未来では目に見える生命を極力尊重するという文化だったとしたら、それを目撃した未来人たちはあまりのショッキングなできごとに気絶するかもしれません。場合によっては警察に拘束されたり。


じゃ、良心や罪悪感が人格にインストールされていない人(ファッション・センスの好悪がない人)っているのかといえば、最近流行りのサイコパスの人たちがそうなのかなと思います。

善(良いファッション)を求めるのは自分の心と身体の平和のためだろうなということです。

雑然と頭に浮かんだことを書いたので、また整理・加筆します。

個別指導塾講師活動5年目に入りました

最初はおっかなびっくりで教えさせていただいていた塾の講師活動ですが、5年目に入ってなんとなく様子が分かりかけてきました。

20代のころは人にものを教えるなんて、柄じゃないし、第一、教えるような何かが自分にあるとは思ってもみませんでした。

ただ人にものを教えさせていただくのはやはり、奥が深いというか、追求し始めるときりがないというか。

色々な若い人と接して、多少なりともその力になれるというのは、私にとっては望外なよろこびです。

できることなら、ライフワークにできればいいなと感じております。

Emacs 27.1をWindows10にインストール

2020年10月1日 Emacs 27.1に改訂

EmacsのWindowsへのインストールに関してなにか問題がありましたら気軽に私宛にメール(yuji@minejima.jp)していただくか、このブログエントリにコメントを付けていただければわかる範囲でお手伝いさせていただきます。

キーを押しても、IMEの入力モードが切り替わらないときは、マウスでEmacsウィンドウの端をクリック(横幅を変えるときにドラッグする部分)するとうまくいくようです。

まずEmacsはコントロールキーを多用するので、押しやすいCapsLockをControlに変えてしまう、Ctrl2capドライバをインストールしておきます(2019/07/04日本語サイトからダウンロードできなくなったようで、英語サイトにリンクしました)。

ctrl2capの具体的なインストール方法はググるとでてきます。(管理者権限でコマンドラインを立ち上げて、ctrl2capのディレクトリで”ctrl2cap /install”を実行)

もしくは、

というやり方もあります。


FSF本家でIME関係の対応をしたようなので、GNU公式FTPサイト(http://ftp.gnu.org/pub/gnu/emacs/windows/ )からインストーラをダウンロードしてきます。(32bitバージョンはi686, 64bitバージョンはx86_64)

(バージョン27からインストーラが付いたようです。)


つぎに環境変数HOMEにホームディレクトリを設定します。
スタートボタン横の検索窓に”環境変数”と入れたらうまくいきました。


さっき環境変数HOMEに指定したディレクトリ(フォルダ)の中に”.emacs.d”ディレクトリを作り(runemacs.exeを一度起動すると自動的に作られます)、さらにその中に”init.el”ファイルを作成します。
私は環境変数HOME=”G:\home”にしてあるので、”G:\home\.emacs.d\init.el”ファイルを作りました。

このinit.elファイルはEmacs Lispで各種設定を記述し、emacsが起動するときに自動的に読み込まれ設定が反映されます。

テンプレート的なinit.elを置いておきます。


日本語環境と好みの文字コードを指定するコードはinit.elに次のようにしています。

(set-language-environment "Japanese")
(set-default-coding-systems 'utf-8)
(prefer-coding-system 'utf-8)

フォントの設定はinit.elに次のようにしています。
“Yu Gothic UI”フォントは最新のWindows10に標準でついてくるようです。
“MyricaM M”は、フリーで配布されています

;; 固定等幅フォント
(set-face-attribute 'fixed-pitch    nil :family "MyricaM M")
;; 可変幅フォント
(set-face-attribute 'variable-pitch nil :family "Yu Gothic UI")

;; "MyricaM M-13"の13が文字の大きさなので好みの値にする
(add-to-list 'default-frame-alist '(font . "MyricaM M-13"))
(set-face-font 'font-lock-comment-face       "MyricaM M-13")
(set-face-font 'font-lock-string-face        "MyricaM M-13")
(set-face-font 'font-lock-keyword-face       "MyricaM M-13")
(set-face-font 'font-lock-builtin-face       "MyricaM M-13")
(set-face-font 'font-lock-function-name-face "MyricaM M-13")
(set-face-font 'font-lock-variable-name-face "MyricaM M-13")
(set-face-font 'font-lock-type-face          "MyricaM M-13")
(set-face-font 'font-lock-constant-face      "MyricaM M-13")
(set-face-font 'font-lock-warning-face       "MyricaM M-13")

自分のWindows環境でどんなフォントが使えるか見るには次のようにするとリストが表示されます。

C-b *scratch*  
;; *scratch* バッファに移動します。
;; Emacs内の落書き帳みたいなバッファです。

(w32-select-font) C-j
;; C-jで直前の(w32-select-font)を評価(eval)します。

C-b や C-j は、コントロールキーを押したまま、bやjを押します


Emacsのフレーム(Windowsでいうウィンドウ)の初期表示位置や大きさは以下のコードをいじってinit.elに入れとくと良いです。

;;; Frame size & position
(setq default-frame-alist
      (append (list
               ;;'(foreground-color . "black")
               ;;'(background-color . "LemonChiffon")
               ;;'(background-color . "gray")
               ;;'(border-color . "black")
               ;;'(mouse-color . "white")
               ;;'(cursor-color . "black")
               '(width . 100) ;; Emacsの横幅(文字単位)
               '(height . 61) ;; Emacsの縦幅(文字単位)
               '(top . 0)     ;; Emacsの上端表示位置(ドット単位)
               '(left . 500) ;; Emacsの左端表示位置(ドット単位)
               )
              default-frame-alist))

msys2などをインストールされている方は、Info形式のマニュアルがあるディレクトリを追加しておくと、`C-h i’したときにメニューが統合されます。

(setq Info-default-directory-list (cons "c:/msys64/usr/share/info" Info-default-directory-list))

最後にrunemacs.exeのショートカットをスタートメニューに登録し、起動後の作業ディレクトリが先ほど指定したホームディレクトリになるようにして、おつかれさまでした。 (バージョン27からスタートメニューに起動用アイコンが自動で登録されるようです)

補足として、Emacsの終了は、C-x C-c です。コントロールキーを押したままxキーを押したあと、コントロールキーを押したままcキーを押します。