| [ < ] | [ > ] | [ << ] | [ 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, 5 2017 using texi2html 1.76.