Happy Binary Day!

 本日11月11日は、「1」が4つという並びから「バイナリデー(Binary Day)」と呼ばれています。日付がバイナリ値である日は、一年に9日(01月と10月と11月の01日、10日、11日)ありますが、「1」が4つ並ぶ11月11日を特に「バイナリデー」と呼ぶようです。ちなみに1111の約数は1、11、101、1111だけ。また、1111は1から数えて(1桁の数を除くと)101番目の回文数(そのまま読んでも逆に読んでも1111)となります。

 こんな不思議な日付であるBinary Dayを記念して、バイナリ界の巨匠の皆様から、祝賀コメントをいただきました。お楽しみください。

 なお、11月11日はこのほかにも、鮭、ポッキー、プリッツ、チーズ、ピーナッツ、きりたんぽ、もやしの日でもあり、また電池、配線器具、靴下、下駄、サッカー、折り紙、宝石、煙突、磁気、介護、コピーライターの日、そして中国では「光棍節(独身者のための記念日)という日にも制定されているそうです。

 また、この記事に関するご意見・ご感想などは、Happy Binary Day!ストーリーのコメントとしてお寄せください。

和田 英一氏からのコメント

 わが国で二進法の利点に早くから気付き, 啓蒙を続けたのは, 富士電機にいらした塩川新助氏(1902~1981)である. 塩川氏は多くの提案をされたが, そのひとつは, 八進法の桁の名称であった. 二進法が如何に便利であっても, 零と一を順に読んだのではイメージが掴めない. とりあえず八進法で読むと多少は改善されるが, 例えば八進法の177なら, 通常はつい十進法の習慣で「ひゃくしちじゅうしち」と読み勝ちである. 塩川氏の提案ではこれを「1pe7pa7(いちぺーしちぱーしち)」と読む.

 つまり八進法の桁の名称は 八の1乗, 2乗, 3乗, 4乗, 5乗がそれぞれ pa, pe,pi, po, pu(母音はアルファベットに現れる順)で, これが十進法の十, 百, 千に相当する. 十進法の万, 億, 兆, ...に相当する八の6乗, 12乗, 18乗, 24乗,30乗が, 塩川氏の提案では, ra, re, ri, ro, ruである. これで八の36乗(二の108乗)までは表現出来る.

 たとえば 十進法の30の階乗は 八進法では 642375 433417 455031 357535 652400 000000であり, これを

6pu4po2pi3pe7pa5ru
4pu3po3pi4pe1pa7ro
4pu5po5pi   3pa1ri 
3pu5po7pi5pe3pa5re
6pu5po2pi4pe    ra

と読む.

 Charles Baggageと同じで, 塩川氏も生まれるのが時代より早過ぎたというべきであろう.

塩川新助: 「2進法と8進法」 有隣電機精機株式会社 計算センター, 1960年.

竹内 郁雄氏からのコメント

 竹内郁雄@東京大学情報理工学系研究科創造情報学専攻です.少し前にBinary Dayを記念する祝賀コメントを書くよう,お誘いを受けました.これはやはりかの有名なSlashdotですので,〆切を守れない人達の巣窟だと勝手に思っています.なのでというわけではないのですが,仕事や遊ぶのに忙しくて,結局〆切直前の投稿となりました.でも,〆切直前なので,編集の方の胃に穴が開くことがあっても読者の皆様にはご迷惑がかからないものと信じております.

 前置きが長くなってしまいました.とりあえずBinary Dayおめでとうございます.といっても実は私,今回初めてそのような日があることを知りました.でも,Binaryとは二進法なので,やはり0も含まれるべきだと思います.つまり,10月10日が本当に祝うべきBinary Dayではなからふか.ちなみに一進法は0の一文字ではなく,1を並べるのが基本です.チューリングマシンでは十進の0を1,1を11,2を111,3を1111,…,というふうに表現するのが自然です.つまり,今日は言ってみれば,一進法での単なる3,Binary Dayの旧盆みたいなもので,新盆は十進法に直しても10となる見事に調和の取れた10月10日なのです.せめて日本の正しいハッカーだけでも,これからは10月10日を二進法記念日として祝うことにしませふ.11月11日は本来11人対11人で行なうサッカーの日とすべきなのです.もっとも10月10日も体育の日であったのぅ.

 二進法では,1と0の調和が大きな意味をもちます.すべてのバグはそこから生まれます.陰と陽と言ってもいいでしょう.きわめて稀ではありますが,正しいプログラムも1と0の調和から生まれます.このことを説いたのが老子であります.私は以前TAO (道) というLispの変種 (PrologもSmalltalkも内包する) を設計・実装したこともあって,ちっとだけTaoismの勉強をしました.(なお,道教というのは,老子の死後,勝手に宗教化されたものなので,いわゆる『老子』とは異なるものです.) 〆切中毒の快感にひたりながら,ここまで書いてきたら,先を書くのが面倒になりました.私が電通大にいたころにプログラミングとTaoismについて書いた文章があります (情報処理学会 夏のプログラミングシンポジウム,1998年夏,所属・肩書はすべて当時のまま).あとはこちらをお読みください.これを読むと,欧米のソフトウェア技術者・研究者がいかにTaoismに傾倒,あるいはTaoismを楽しんでパロディしているかがよくわかります.

 こんな堅苦しい文章なんか読む気がしないという人のために,1と0の対比を明快に表す写真をプレゼントしましょう.どちらを1とし,どちらを0とするかは,読者次第であり,性格占いでもあります.それとは関係ないのですが,ま,この祝賀コメントはあきらかに写真Bのほうでしょう.

写真A
写真B

g新部 裕氏からのコメント

Title: "Give a hacker 5x5-bit space or more" (邦題:「Hacker は飛べる、5x5-bit あれば。」)

参考:http://catb.org/hacker-emblem/

後藤 正徳氏からのコメント

echo 'enum g{};enum k{};enum n{};void _(unsigned char a,signed char b,unsigned long long **c,unsigned char d,signed char e,char f,k k,int h,n n,g g){};' > z.cc && g++ -c z.cc && objdump -x z.o | grep _Z1_
    

上記を実行すると... (with G++ 3.x 以上)

高田 浩和氏からのコメント

 11月11日の Binary Dayに寄せて、何かコメントがあればとのことでしたが、Linuxカーネルの開発によく使われるいくつかのツール(git/gitk,sparse, etc.)のうち、ちょっとマイナーだけれど、とても便利なツールということで、Quilt[1]を紹介することにしたいと思います。

鴨志田 良和氏からのコメント

 Binary Dayおめでとうございます。

 最近、知人数名で、有名な古典である、KernighanとRitchieの、"The C Programming Language"を読む会を開いています。参加者の多くはソフトウエアの専門家ではないけれど数学にかなり詳しい方です。私は、数学者がどのように物事を理解しようとするのかを観察して楽しませてもらってます。それと同時に、自分を含むソフトウエアやプログラミングに携わる人間も、たまには数学に触れるべきだということを実感しています。今年流行ったProject Eulerなんかも、数学的な考え方に触れるよいきっかけになるかもしれませんね。

 そこで、今回はBinary Dayにちなんで、0,1を使った数学(っぽい)問題を紹介したいと思います。

(問題)

以下が正しいことを示してください。

2以上のすべての整数pについて、p進数であらわした1010...01のような1と0が交互に現れる数が素数になりうるのは、3ケタの時(101)に限る。

shinichiro.h氏からのコメント

 月並ですが、happy hackingと言ってみました(ちょっとした仕掛け付き)。

竹迫 良範氏からのコメント「温故知新の技術を現代に。0x457=1111」

 古き良き汎用機時代から受け継がれるバイナリ~EBCDICエンコーディング~の伝統を現代のWeb2.0の技術に応用してみました。

 EBCDICで難読化したJavaScriptコードをAjax対応ブラウザ「Safari3, IE7」で実行可能にしました。457バイトのファイルですが、HTMLとJavaScriptとELFバイナリのPolyglotです。それぞれ4つの環境で、異なる4種類の実行結果が楽しめるようになっています。

  1. MacOS X の環境なら → Safari3 で HTML を開いてください
  2. Windows の環境なら → IE7 で HTML を開いてください
  3. Linux x86 の環境なら → ELFバイナリとして ./0x457.html と実行できます
  4. その他UNIX系OSなら → VT100端末で cat 0x457.html と表示してください

 どうぞご利用ください。

 竹迫 良範(サイボウズ・ラボ株式会社/Shibuya Perl Mongers)

ひげぽん氏からのコメント

11101011 00111100 10010000 01101101 01101111 01101110 01100001 00100000 00100000 00100000 00100000 00000000 00000010 00000001 00000001 00000000 00000010 11100000 00000000 01000000 00001011 11110000 00001001 00000000 00010010 00000000 00000010 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00101001 00000000 00000000 00000000 00000000 01001110 01001111 00100000 01001110 01000001 01001101 01000101 00100000 00100000 00100000 00100000 01000110 01000001 01010100 00110001 00110010 00100000 00100000 00100000 00110001 11110110 10001001 11110111 10111000 11000000 00000111 10001110 11011000 10111000 00000000 10011111 10001110 11000000 10111001 00000000 00000001 11110011 10100101 11101010 01010110 00000000 00000000 10011111 10001110 11011000 10000000 11101100 00010000 10001110 11010000 10111100 11111111 11111111 00110001 11000000 11001101 00010011 01110011 00001001 10111110 10111101 00000000 11101000 01000000 00000000 11101001 00111010 00000000 10111110 11001011 00000000 11101000 00110111 00000000 10110100 00000110 10110000 00000000 11001101 00010000 10111110 11011010 00000000 11101000 00101011 00000000 11101000 00001010 00000000 10110100 00001011 10110111 00000000 11111110 11001011 11001101 00010000 11101011 11101101 10111010 00000000 00000101 10111000 11111111 11111111 00111101 00000000 00000000 01110100 00000011 01001000 11101011 11111000 01001010 10000001 11111010 00000000 00000000 01110100 00000101 10111000 11111111 11111111 11101011 11101100 11000011 11110100 11101011 11111101 01100000 00101110 10101100 00001000 11000000 01110100 00001000 00110001 11011011 10110100 00001110 11001101 00010000 11101011 11110010 01100001 11000011 01000010 01001001 01001111 01010011 00100000 01100101 01110010 01110010 01101111 01110010 00100001 00001101 00001010 00000000 01001000 01100101 01101100 01101100 01101111 00101100 00100000 01000010 01101001 01101110 01100001 01110010 01111001 00100000 00000000 01001000 01100001 01110000 01110000 01111001 00100000 01000010 01101001 01101110 01100001 01110010 01111001 00100000 01000100 01100001 01111001 00100001 00100000 00100000 00100000 00000000 01101110 01101111 01110100 00100000 01100110 01101111 01110101 01101110 01100100 00001101 00001010 00000000 00001101 00001010 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01010101 10101010

binary-day.tar.gz

ご意見・ご感想はHappy Binary Day!ストーリーへどうぞ。

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

処理中...