メインコンテンツまでスキップ

# 数学演算子

SenseTalkは、数多くの数学演算子を提供します。以下で概要を説明します。

### `+` , `Plus` 演算子​

operand1 + operand2
operand1 plus operand2

``put 12 + 97 into someSum``

``put a squared plus b squared into sumOfSquares``

``put [12,8] + [4,7] into vectorSum``

### `-` , `Minus` 演算子​

operand1 - operand2
operand1 minus operand2

``put c^2 - sumOfSquares into difference``

``put (1,3,5,6) - (1,1,0,2) into diffList``

### `*` , `Times`, `Multiplied By` 演算子​

operand1 * operand2
operand1 times operand2
operand1 multiplied by operand2

``put 2 * radius into diameter``

``put pi times diameter into circumference``

``put [1,2,3,4] * [2,2,1,3]-- result is [2,4,3,12]``

``put [1,2,3md ,4] * 4 -- result is [4,8,12,16]``

``put 7 multiplied by 3 -- result is 21``

### `/` , `Divided By` 演算子​

operand1 / operand2
operand1 divided by operand2

``put pi / 2 into halfPi``

``put [1,2,3,4] / [2,1,1,2] -- result is [0.5,2,3,2]``

``put [2,4,5,8] / 2 -- Result is [1,2,2.5,4]``

### `^` , `To The Power Of` , `Squared` , `Cubed` 演算子​

``put a squared + b squared into sumOfSquares``

``put 6 * x^4 - 2 * y^3 into z``

### `%` , `Percent` 演算子​

``put 4% -- .04``

``put 50 * 4% -- 2``

``put 50 + 4% -- 52``

``put 50 - 4% -- 48``

``put sales plus ten percent into projectedSales``

### `Div` 演算子​

``put cookieCount div numberOfPeople into cookiesForEach``

### `Rem` 演算子​

``put cookieCount rem numberOfPeople into extrasForMe``

### `Modulo`, `Mod` 演算子​

``put someValue mod modulusValue into extrasForMe``

### `Is a Multiple Of`, `Is Divisible By` 演算子​

``put 2895 is a multiple of 5-- true``

``put 169 is divisible by 13 -- true``

``put 98.6 is an exact multiple of 3.14-- false``

``もしcookieCountがnumberOfPeopleでちょうど割り切れるなら "Hooray!" を出力する``

### `Rounded To`, `Rounded to Nearest` 演算子​

{} 近傍の {倍数に} 最近傍の倍数 まで丸める
{} 近傍の 単位 まで丸める

``put 123.4567を2桁まで丸める-- 123.46``

``put 123.4567を-1の小数点以下の桁数まで丸める-- 120``

``put 98.6を3.14の最近傍の倍数まで丸める-- 97.34``

``put totalを最近傍の.25まで丸めてamountDueに入れる``

``put 12.345メートルを最近傍のフィートまで丸める — 41フィート``

### `But at Least`, `But No Less Than`, `But At Most`, `But No More Than` 演算子​

``set highScoreをスコアの中の最大値に設定するが、最大でも100``

``set lowScoreをrawScore - 9に設定するが、少なくともゼロ``

``set volumeをmyVolumeに設定するが、多くても11``

``set roomCapacityをsizeLimitに設定するが、最低でも123``

### `BitNot`, `BitAnd`, `BitOr`, `BitXOr`, `BitShift` 演算子​

• `BitNot`: 数値の各ビットを反転させます。0は1に、1は0になります。
• `BitAnd`: _オペランド1_の各ビットと_オペランド2_の対応するビットを比較し、結果のビットを生成します。両方のビットが1の場合、結果は1、それ以外の場合、結果は0です。
• `BitOr`: _オペランド1_の各ビットと_オペランド2_の対応するビットを比較し、結果のビットを生成します。
• 両方のビットが0の場合、結果は0。
• どちらか一方または両方のビットが1の場合、結果は1。
• `BitXOr`: _オペランド1_の各ビットと_オペランド2_の対応するビットを比較し、結果のビットを生成します。
• 両方のビットが0または1の場合、結果は0。
• ビットが1つだけの場合、結果は1。
• `BitShift` 演算子: 数値のすべてのビットを指定したビット数だけ右または左にシフトします。`right`または`left`が指定されていない場合：
• 正の数はビットを右にシフトします。
• 負の数はビットを左にシフトします。

bitNot {of} オペランド
オペランド1 オペランド2 のbitAnd
オペランド1 オペランド2 のbitOr
オペランド1 オペランド2 のbitXOr オペランド bitShift { | } シフト量

``set the numberFormatを "binary8"に設定 // 数値を8桁の二進数で表示put bitNot 0b00011011 —> 0b11100100put 0b00010101 bitAnd 0b00111100 —> 0b00010100put 0b00010101 bitOr 0b00111100 —> 0b00111101put 0b00010101 bitXOr 0b00111100 —> 0b00101001put 0b00010101 bitShift 左に 2 —> 0b01010100``

### `Bit` 式、`Bit` 関数​

`bit` 式は _コンテナ_で、次のようなことができます：

• 数値内の個々のビットの値を取得します。`0` または `1``True` または `False`
• `sourceValue` が変数または他のコンテナである場合、数値内の個々のビットの値を `0` または `1``On` または `Off``Yes` または `No``True` または `False` に設定します。
ノート

64ビット数値では、ビット1は低位ビットで、ビット64は高位ビットです。

また、`bit` 式をブーリアンとしても使用できます。例えば、`if` 文の条件として使用します。

bit ビット番号 ソース値
bit( ビット番号 ) の ソース値
ソース値 .bit( ビット番号 ) ソース値's bit( ビット番号 )

``put bit 3 の 0b100110 —> 1if bit(1) の 543 なら put "It's an odd number!" —> It's an odd number!set flagsを 0b100000に設定put flags.bit(2) —> 0set flags.bit(2)を yesに設定turn on bit 3 の flagsput flags —> 0b100110``