@orange_in_space 4ビットだけ立てたAND積を取るとか? 若干早くなりそう
IEEE754の「けち表現」><(2/2)
(つづき)
でも、なんで必ず一番左のビット(この場合は24bit目)が1になるの?><の説明><
浮動小数点数ってつまり指数表記なんだから、仮数部を指数部分ずらした表現じゃん?><
例えば「00001010.00」って数があったとする><(2進でも10進でもおk!><)
これで桁以外の意味がある部分(つまり両側から0を削ってたら)は「101」かも><
でもそれだと困る><
101じゃ無くて1010なんだから><
そこで「最初のゼロじゃない数字が何桁目(千の位とか)にあるか?><」ってことも覚えておけば、元に戻せる><
「1010.00」ならば下から見て4桁目だよっておぼえてれば元に戻せる><
つまり、「101」(仮数部)を「4」桁目から(指数部)書いたやつ!><って表現するのが浮動小数点数><
ところで、仮数部は「最初のゼロじゃない数字」からなんだからつまり、仮数部の頭は0では無い><
さらに2進数の場合は0じゃない数字は1しかない><
つまり最初は必ず1になるんです!!!!><
(完)
これを逆から考えれば、整数をfloatに出来るはず?><
https://mstdn.nere9.help/@orange_in_space/100795514968355061
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. http://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en010961
島津製作所の「dzu」と標準式ローマ字 | yasuokaの日記 | スラド https://srad.jp/~yasuoka/journal/624131/
島津製作所の考えるQWERTY配列の歴史 | yasuokaの日記 | スラド https://srad.jp/~yasuoka/journal/624015/