読者です 読者をやめる 読者になる 読者になる

Windows標準の電卓 プログラマ機能について

雑談

f:id:cignoir:20140408112239p:plain

最近知ったのですが、メニューの[表示]から[プログラマ]を選択することでこのモードにすることが出来ます。
曖昧でよくわからない名前の機能ですが、要はビット演算に特化した電卓です。
10進数や16進数の相互変換や計算はもちろん、ビット列が一目で確認出来るのでメモリダンプの解析等に重宝しそうです。
(整数しか扱えません。負の数の補数表現にも対応してます。)

他の電卓にはない見慣れないボタン群

データ型

f:id:cignoir:20140408113357p:plain

Byte = 1 byte = 8 bits
Word = 2 bytes
Dword = 4 bytes
Qword = 8 bytes

DwordのDはDouble, QwordのQはQuadです。

ビット演算

RoL 左回転
RoR 右回転
Or 論理和
Xor 排他的論理和
Lsh 左シフト
Rsh 右シフト
Not 否定
And 論理積

ビット演算のおさらい

積(AND) &

22 & 115 → 18

0 0 0 1 0 1 1 0
AND 0 1 1 1 0 0 1 1
= 0 0 0 1 0 0 1 0
和(OR) |

22 | 115 → 119

0 0 0 1 0 1 1 0
OR 0 1 1 1 0 0 1 1
= 0 1 1 1 0 1 1 1
排他論理和(XOR) ^

22 ^ 115 → 101

0 0 0 1 0 1 1 0
XOR 0 1 1 1 0 0 1 1
= 0 1 1 0 0 1 0 1
否定(NOT) ~

~115 → -116 *1

0 1 1 1 0 0 1 1
= 1 0 0 0 1 1 0 0
左シフト <<

115 << 2 → -52

<<2 0 1 1 1 0 0 1 1
= 1 1 0 0 1 1 0 0

※実際は32ビットの整数として扱われるので115 << 2 → 460

符号付き右シフト >>

115 >> 2 → 28

>>2 0 1 1 1 0 0 1 1
= 0 0 0 1 1 1 0 0

※左端(符号ビット)固定

符号なし右シフト >>>

115 >>> 2 → 28

>>>2 0 1 1 1 0 0 1 1
= 0 0 0 1 1 1 0 0

*1:参考:負数(2の補数表現) <実体験から始める情報講座  by kayakaya>