[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
パッケージ bitwise
は整数定数のビット操作を可能にする関数を提供します。
通常通り、知られているかもしれない変数の属性を考慮してもし定数の実際の値が未知なら、
maximaは演算の結果を整理しようとします。
declare
メカニズムを参照してください。
43.1 Functions and Variables for bitwise |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
符号付き整数のすべてのビットを反転させます。
この操作の結果は -int - 1
です。
(%i1) load("bitwise")$ (%i2) bit_not(i); (%o2) bit_not(i) (%i3) bit_not(bit_not(i)); (%o3) i (%i4) bit_not(3); (%o4) - 4 (%i5) bit_not(100); (%o5) - 101 (%i6) bit_not(-101); (%o6) 100 |
Categories: Number theory Binary operations Package bitwise
この関数は、2つ以上の符号付き整数のビット毎の and
を計算します。
(%i1) load("bitwise")$ (%i2) bit_and(i,i); (%o2) i (%i3) bit_and(i,i,i); (%o3) i (%i4) bit_and(1,3); (%o4) 1 (%i5) bit_and(-7,7); (%o5) 1 |
もし bit_and
のパラメータの1つが偶数かどうかわかっているなら、
関数はこの情報を考慮します。
(%i1) load("bitwise")$ (%i2) declare(e,even,o,odd); (%o2) done (%i3) bit_and(1,e); (%o3) 0 (%i4) bit_and(1,o); (%o4) 1 |
Categories: Number theory Binary operations Package bitwise
この関数は2つ以上の符号付き整数のビット毎の or
を計算します。
(%i1) load("bitwise")$ (%i2) bit_or(i,i); (%o2) i (%i3) bit_or(i,i,i); (%o3) i (%i4) bit_or(1,3); (%o4) 3 (%i5) bit_or(-7,7); (%o5) - 1 |
もし bit_or
のパラメータの1つが偶数かどうかわかっているなら、
関数はこの情報を考慮します。
(%i1) load("bitwise")$ (%i2) declare(e,even,o,odd); (%o2) done (%i3) bit_or(1,e); (%o3) e + 1 (%i4) bit_or(1,o); (%o4) o |
Categories: Number theory Binary operations Package bitwise
この関数は2つ以上の符号付き整数のビット毎の xor
を計算します。
(%i1) load("bitwise")$ (%i2) bit_xor(i,i); (%o2) 0 (%i3) bit_xor(i,i,i); (%o3) i (%i4) bit_xor(1,3); (%o4) 2 (%i5) bit_xor(-7,7); (%o5) - 2 |
もし bit_xor
のパラメータの1つが偶数かどうかわかっているなら、
関数はこの情報を考慮します。
(%i1) load("bitwise")$ (%i2) declare(e,even,o,odd); (%o2) done (%i3) bit_xor(1,e); (%o3) e + 1 (%i4) bit_xor(1,o); (%o4) o - 1 |
Categories: Number theory Binary operations Package bitwise
この関数は符号付き整数 int
のすべてのビットを nBits
だけ左へシフトさせます。
この操作で整数の幅は nBits
だけ拡張されます。
なので、bit_lsh
の結果は int * 2
です(原文に従う)。
(%i1) load("bitwise")$ (%i2) bit_lsh(0,1); (%o2) 0 (%i3) bit_lsh(1,0); (%o3) 1 (%i4) bit_lsh(1,1); (%o4) 2 (%i5) bit_lsh(1,i); (%o5) bit_lsh(1, i) (%i6) bit_lsh(-3,1); (%o6) - 6 (%i7) bit_lsh(-2,1); (%o7) - 4 |
Categories: Number theory Binary operations Package bitwise
この関数は符号付き整数 int
のすべてのビットを nBits
だけ右へシフトさせます。
この操作で整数の幅は nBits
だけ減らされます。
(%i1) load("bitwise")$ (%i2) bit_rsh(0,1); (%o2) 0 (%i3) bit_rsh(2,0); (%o3) 2 (%i4) bit_rsh(2,1); (%o4) 1 (%i5) bit_rsh(2,2); (%o5) 0 (%i6) bit_rsh(-3,1); (%o6) - 2 (%i7) bit_rsh(-2,1); (%o7) - 1 (%i8) bit_rsh(-2,2); (%o8) - 1 |
Categories: Number theory Binary operations Package bitwise
変数が数 int
を保持するために何ビット長必要か調べます。
この関数は正整数上のみに演算します。
(%i1) load("bitwise")$ (%i2) bit_length(0); (%o2) 0 (%i3) bit_length(1); (%o3) 1 (%i4) bit_length(7); (%o4) 3 (%i5) bit_length(8); (%o5) 4 |
Categories: Number theory Binary operations Package bitwise
符号付き整数 int
でビット nBit
がセットされているかどうか調べます。
(%i1) load("bitwise")$ (%i2) bit_onep(85,0); (%o2) true (%i3) bit_onep(85,1); (%o3) false (%i4) bit_onep(85,2); (%o4) true (%i5) bit_onep(85,3); (%o5) false (%i6) bit_onep(85,100); (%o6) false (%i7) bit_onep(i,100); (%o7) bit_onep(i, 100) |
符号付き数では、符号ビットは2の補数相当です。
(原文: For signed numbers the sign bit is interpreted to be more than nBit
to the
left of the leftmost bit of int
that reads 1
.)
(%i1) load("bitwise")$ (%i2) bit_onep(-2,0); (%o2) false (%i3) bit_onep(-2,1); (%o3) true (%i4) bit_onep(-2,2); (%o4) true (%i5) bit_onep(-2,3); (%o5) true (%i6) bit_onep(-2,4); (%o6) true |
もしテストする数が偶数かどうかわかっているなら、 関数はこの情報を考慮します。
(%i1) load("bitwise")$ (%i2) declare(e,even,o,odd); (%o2) done (%i3) bit_onep(e,0); (%o3) false (%i4) bit_onep(o,0); (%o4) true |
Categories: Number theory Binary operations Package bitwise
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.