分12ものづくりには規格が必要です。「⁠規格」と聞くとルールに縛られるイメージがあります。ものづくりにおける規格は,私たちを余計な作業から自由にします。規格が私たちを助けてくれる身近な例は「ねじ」です。日本にはJIS(日本工業規格)があります。JISにそって作られた同じ規格の雄雌のねじは,どの会社が作ったものでも互いにかみ合います。なかったら,ひとつの会社の作った部品しか使えなくなります。規格があるというのは,ある程度規格のことを知る手間がかかるデメリットを考えても,大変有利なことなのです。ものづくりの名人はたくさんの規格を知っていて,上手に活用します。規格にそって,省ける手間は極力省き,規格で対応していないような,本当に考えて作らなければならない部分に集中するのです。プログラミングの世界にもたくさんの規格があります。基本的なものについて大まかに知っておくと良いでしょう。今回学習するのは,そんな規格の一つ,実数の仕組みの規格です。実数をコンピュータで表現する方法はたくさんあり,それぞれに一長一短があります。使用するOSやプログラミング言語によって違います。Java言語はOSや機種によらず,これから学習する規格だけを採用しています。どのコンピュータで作ったデータも,この規格にそっているため,互いにやりとりして困ることがありません。C言語も同じ規格を使っていますので,学んで損はありません。少々の手間がかかりますが,あきらめず,課題まで取り組んでください。今回でしっかり理解してしまいましょう。実数型のしくみJava言語の実数(※1)型は浮動小数点数という方法で表現されています。浮動小数点数とは,符号部S・指数部E・仮数部M・バイアスBとして実数Rを次のように表現する方法です。R=-1.23であれば,といった具合です。してこんなに複雑な形にしなければならないのでしょうか。それはこのような正規化数(※2)にすることで,科学技術計算に出てくる,とても大きな値やとても小さい値をコンピュータで取り扱いやすくなるからです。プログラミング言語入門書や教科書では,「⁠整数値は整数型に,小数を含んだ数は実数型に」という説明にとどめる場合が多いですね。実数型が浮動小数点数であることや,詳しい浮動小数点数の仕組みまで立ち入って説明されません。この知識が無いと,コンピュータで数値計算を行う場合に発生する誤差の理由が具体的にわかりません。浮動小数点数の仕組みを理解しておきましょう。浮動小数点数は,高級(※3)プログラミング言語のほとんどが対応しています。浮動小数点数にはIEEE方式やIBM方式があります。近似値表現であるため,様々な形で誤差が発生するということをよく覚えておいてください。※1実数とは,数学的には整数・分数といった有理数と,無理数からなる集合です。有理数とは分数の形(比の形)で表される数,無理数とは分数で表せない数です。これから学ぶJava言語で取り扱える実数の範囲は大変限られています。※2正規化数とは,一定の形をした数という意味です。浮動小数点数IEEE754では,仮数部を0から1の範囲に収めるように数値を変換します。指数部でその数値の桁数を表現し,符号部で正負の符号を表現します。※3ここでいう高級とは「高価な」という意味ではありません。プログラミングを行う際,決まり切った手続きや煩雑な手順を,ある程度コンピュータに肩代わりさせる機能を持たせたプログラミング言語という意味です。高級言語には,Java,C++,BASICなどがあります。対する低級言語とは,コンピュータに実行可能な最低限度の命令セットを備えた言語です。多くの場合でマシン語,アセンブリ言語を意味します。高水準言語,低水準言語という呼び分けもあります。C言語は高級言語ですが,低級言語的に利用できるため,中級言語と呼ばれることもあります。IEEE754とはIEEE754とはIEEE(※4)の定める浮動小数点数の表現方法の標準規格です。浮動小数点数の表現形式を規定するとともに,無限大や非数といった特殊な値も規定し,浮動小数点演算でのそれらの値の扱い方を規定しています。単精度,倍精度など4種類(※5)あり,取り扱える数値の絶対値の大きさと仮数部の桁数が異なっています。標準では単精度のみが必須とされていて,他はオプションです。現在多くのC言語はfloatがIEEEの単精度,doubleはIEEEの倍精度(※6)となっています。Java言語はIEEE754に準拠しており,表8.1のように2つの浮動小数点数の実数型があります。Inc.)アイトリプルイーと読み,非営利の電気・電子技術の学会です。アメリカに本部を持っています。※5単精度(32ビット),倍精度(64ビット),拡張単精度(43ビット以上⁠)⁠,拡張倍精度(79ビット以上。同じサイズのこともあれば違うこともあると書かれています。CがIEEE754以前に作られた言語であるためです。プログラミングと日本の端っこ踏破旅行。2010年のLotYはRuby。結城浩氏のような仕事をしたいと妄想する30代後半♂。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。