新しいものを表示
orange さんがブースト

@orange_in_space 4ビットだけ立てたAND積を取るとか? 若干早くなりそう

一番大きい1のbit(例えば00101101なら6)を調べるのって高速に調べるアルゴリズムとかってないのかな?><(頭からシフトして見てくしかない?><)

こんがらがってきた・・・・><

文字数オーバーで削った・・・><(桁以外の意味がある部分(とはどういう意味か)の所><;)

IEEE754の「けち表現」><(2/2) 

(つづき)
でも、なんで必ず一番左のビット(この場合は24bit目)が1になるの?><の説明><

浮動小数点数ってつまり指数表記なんだから、仮数部を指数部分ずらした表現じゃん?><

例えば「00001010.00」って数があったとする><(2進でも10進でもおk!><)

これで桁以外の意味がある部分(つまり両側から0を削ってたら)は「101」かも><
でもそれだと困る><
101じゃ無くて1010なんだから><

そこで「最初のゼロじゃない数字が何桁目(千の位とか)にあるか?><」ってことも覚えておけば、元に戻せる><
「1010.00」ならば下から見て4桁目だよっておぼえてれば元に戻せる><

つまり、「101」(仮数部)を「4」桁目から(指数部)書いたやつ!><って表現するのが浮動小数点数><

ところで、仮数部は「最初のゼロじゃない数字」からなんだからつまり、仮数部の頭は0では無い><
さらに2進数の場合は0じゃない数字は1しかない><
つまり最初は必ず1になるんです!!!!><
(完)

IEEE754の「けち表現」><(1/2) 

IEE754の「けち表現」の意味がなかなかわからなかったけど、「なんで必ず1になるか?」をこう理解したらわかった><
-----
2進数で0以外の数字をあらわそうとすると、必ずどこかに1があるじゃん?><(無ければゼロじゃん?><;(10進数で言うと0じゃない数字があればゼロじゃないじゃん?><))

めでたしめでたし><
(つづく)

IEEE754ちょっとわかるになった>< 

IEEE754 単精度で5.0><

バイナリ表現><
01000000 10100000 00000000 00000000

符号:0(正)

指数部 8bit
10000001(127足してある表現なので-127して「2」)

仮数部 23bit
_0100000 00000000 00000000

仮数部は24bit目が常に1だけどケチって23bitに削ってあるので、それを元に戻す><
10100000 00000000 00000000

(とりあえず整数(=指数部が正)だけで考えると)
それを右に24bitシフトして、左に1ビットシフトして、最後に左に指数分(今回は「2」)シフトすると、
(つまり21右シフトする)
00000000 00000000 00000101

0b101なのでつまり10進で「5」 だ!!!><

AN575 IEEE 754 Compliant Floating Point Routines | Application Notes | Microchip Technology Inc. microchip.com/wwwAppNotes/AppN

例えば16bitな整数を単精度な浮動小数点に変換するのって、標準的な8bitCPU(FPUとか無いやつ)を使ったら何命令ぐらいで出来るんだろう?><

IEEE 754な浮動小数点数をビット弄って自分で作ろうとしてみて思ったけど、もしかして整数を浮動小数点数に変換するの(例えばintな42をfloatな42.0とか)って、ものすごくめんどくさいというか(単純なCPUを基準に見た場合)わりと重い処理なのかも?><

アンカレッジ、貨物便ばっかり><

orange さんがブースト

アンカレッジの直行便っていまはないんだね

orange さんがブースト

digikeyのやつ、アンカレッジから出発した。今日中には日本だな

島津製作所の「dzu」と標準式ローマ字 | yasuokaの日記 | スラド srad.jp/~yasuoka/journal/62413
島津製作所の考えるQWERTY配列の歴史 | yasuokaの日記 | スラド srad.jp/~yasuoka/journal/62401

低体温ぎみで体調つらいになってきた><

古いものを表示
:realtek:

思考の /dev/null