Арифметические операции

Рассмотрим скрипт, который выполняет арифметические операции над двумя числами (х=8 и z=3) и выводит результаты на экран дисплея.

Результат сложения: х + z = 11

Результат вычитания: х - z = 5

Результат умножения: х * z = 24

Результат деления: х / z = 2.6666666666666665

Результат целочисленного деления: х % z = 2

Результат инкремента х : ++х = 9

Результат декремента z : —z = 2

Результат сложения х + = z. После выполнения операции х= 11

Код программы приведен ниже:

script language-'JavaScript"

х=8;

z=3;

yAdd=x+z;

ySub=x-z;

yMult=x*z;

yDiv=x/z;

yMod=x%z;

ylnkr=++x;

yDekr=—z;

x+=z;

document.угйе("Результат сложения: x + z = "+yAdd+" ");

document.угйе("Результат вычитания: x - z = "+ySub+" ");

document.?Гйе("Результат умножения: x * z = "+yMult+" ");

document.угПе("Результат деления: x / z = "+yDiv+" ");

document. угПе("Результат целочисленного деления: x % z =

"+yMod+" ");

document.write("Pe3yjibTaT инкремента x : ++x = "+ylnkr+" ");

document.write("Pe3yjn»TaT декремента z : —z = "+yDekr+" ");

document.?гйе("Результат сложения x + = z. После выполнения операции x= "+x+" ");

/script

Дадим краткие пояснения для некоторых операций. Целочисленное деление по-другому называется операцией нахождения остатка (или делением по модулю). Например, если число 15 целочисленно разделить на 4, то остаток равен 3.Операция инкремента представляет собой процедуру увеличения числа на единицу. Операция декремента уменьшает имеющееся число на единицу.

В языке JavaScript используется специфическая форма оператора присваивания. Арифметические операции, представленные в сокращенной (модифицированной) форме, приведены в таблице.

Сокращенный оператор присваивания

Стандартный оператор присваивания

X += у

X = X + у

х-=у

X = X - у

X *= у

X = X * у

X /= у

X = X / у

х%=у

X = X % у

Заметим, что обе формы рассмотренного оператора присваивания могут быть использованы в программах, написанных на JavaScript.

Логические операции и операции сдвига

Рассмотрим скрипт, который выполняет логические операции и операции сдвига над двумя десятичными переменными х и z и двумя логическими (булевыми) переменными q и w. Выберем такие значения аргументов:

х = 7

z = 5

q = true

w = false

  • 1. Результат логического умножения y=x&z (операция И, конъюнкция): у = 5
  • 2. Результат логического сложения y=x|z (операция ИЛИ, дизъюнкция): у = 7
  • 3. Результат выполнения операции неравнозначности y=xAz (исключающее ИЛИ): у = 2
  • 4. Результат сдвига влево на один разряд числа х: у=14
  • 5. Результат сдвига влево на один разряд числа z: у =10
  • 6. Результат сдвига влево на два разряда числа х: у=28
  • 7. Результат сдвига влево на два разряда числа z: у =20
  • 8. Результат сдвига вправо на один разряд числа х: у =3
  • 9. Результат сдвига вправо на один разряд числа z: у =2
  • 10. Результат выполнения операции И: q&&w =false
  • 11. Результат выполнения операции ИЛИ: q||w =true
  • 12. Результат инвертирования переменной q: !q = false
  • 13. Результат инвертирования переменной w: !w = true

Код скрипта размещен ниже.

script language="JavaScript"

//Ввод исходных данных

х=7;

z=5;

q=truc;

w=false;

//Вычисления

yAnd=x&z; //логическая операция И

yOr=x|z; //логическая операция ИЛИ

yXor=xAz; //исключающее ИЛИ

xLeft=x«l; //сдвиг влево на один разряд

zLeft=z«l; //сдвиг влево на один разряд

xLeft2=x«2; //сдвиг влево на два разряда

zLefit2=z«2; //сдвиг влево на два разряда xRight=x»>l; //сдвиг вправо на один разряд

zRight=z»>l; //сдвиг вправо на один разряд

u=q&&w; //операция И

p=q||w; //операция ИЛИ

r=!q; //инверсия (отрицание)

t=!w; //инверсия (отрицание)

//Вывод результатов на экран

document.write(" 1. Результат логического умножения y=x&z (операция И, конъюнкция): у = "+yAnd+" ");

document.write("2. Результат логического сложения y=x|z (операция ИЛИ, дизъюнкция): у = "+yOr+" ");

document.write("3. Результат выполнения операции неравнозначности y=xAz (исключающее ИЛИ): у = "+уХог+"<Ьг>");

document.write("4. Результат сдвига влево на один разряд числа х: y="+xLeft+" ");

document.write("5. Результат сдвига влево на один разряд числа z: у ="+zLeft+" ");

document.write("6. Результат сдвига влево на два разряда числа х: y="+xLeft2+" ");

document.write("7. Результат сдвига влево на два разряда числа z: у ="+zLeft2+" ");

document.write("8. Результат сдвига вправо на один разряд числа х: у ="+xRight+" ");

document.write("9. Результат сдвига вправо на один разряд числа z: у ="+zRight+" ");

document. write(" 10. Результат выполнения операции И: q&&w ="+u+" ");

document.write(" 11. Результат выполнения операции ИЛИ: q||w ="+p+" ");

document.write("12. Результат инвертирования переменной q: !q = "+r+" ");

document.write(" 13. Результат инвертирования переменной w: !w = "+t+" ");

/script

Дадим краткие комментарии к результатам вычислений.

Логическое умножение двух десятичных чисел 7 и 5 дало результат 5. Объяснить полученный результат можно только с привлечением двоичной системы счисления и законов булевой алгебры. Перевод десятичного числа 7 в двоичную систему счисления дает результат: 7D = 111В. Десятичное число

5 в двоичной системе счисления имеет вид: 5D = 101В. Результаты поразрядного логического перемножения этих двух чисел приведены в таблице.

Величины

Двоичные

разряды

з|

2

1

Переменная x=7D

1

1

1|

Переменная z=5D

1

0

_________1J

Результат умножения (х & z)

1

0

__________1J

Последняя строка говорит о том, что в результате логического умножения двух десятичных чисел 7 и 5 получено двоичное число 101В = 5D.

Аналогично можно рассмотреть результаты логического сложения (операция ИЛИ).______________________________________________

Величины

Двоичные

разряды

3

2

1

Переменная x=7D

1

1

______1J

Переменная z=5D

1

0

1

Результат сложения (х | z)

1

1

_______1J

Последняя строка говорит о том, что в результате логического сложения двух десятичных чисел 7 и 5 получено двоичное число 11 IB = 7D.

Рассмотрим результаты выполнения операции неравнозначности (исключающее! ИЛИ)._______________________________________

Величины

Двоичные

разряды

3

2

1

Переменная x=7D

1

1

1

Переменная z=5D

1

0

1

Результат (х л z)

0

1

0

Последняя строка говорит о том, что в результате выполнения поразрядной операции исключающее ИЛИ над десятичными числами 7 и 5 получено двоичное число 010В = 2D.

Для понимания полученного результата сдвига числа влево необходимо вспомнить, что старшие разряды двоичных чисел располагаются слева, а младшие - справа. После сдвига числа x=7D на один разряд влево будет получено двоичное число 1110В, которое соответствует десятичному числу 14D. Заметим, что операция сдвига двоичного числа на один разряд влево эквивалентна умножению числа на 2. Сдвиг влево на два разряда эквивалентен умножению числа на 4 и т.д.

Заметим, что технически операция сдвига в ЭВМ выполняется с помощью последовательных регистров. При больших значениях взятых чисел (операндов) точность вычислений будет зависеть от разрядности используемых регистров сдвига (числом установленных в них триггеров). Для языка JavaScript допустимая разрядность двоичных операндов ограничена тридцатью двумя битами. По этой причине операции с числами более 231=2147483648 будут выполняться неверно.

Операция сдвига вправо приводит к уменьшению исходного операнда. При этом, если младший бит был равен 0, то сдвиг вправо на один разряд будет эквивалентен делению числа на 2. Например, сдвиг числа 6D=110B даст результат 11В (это двоичное число соответствует десятичному числу 3D). Если исходный операнд нечетный (двоичное число заканчивается единицей), то сдвиг вправо не будет соответствовать операции деления на два. Например, после сдвига числа 5D= 101В будет получен результат 10B=2D.

Операции 1...9 проводились над многоразрядными двоичными числами. Значительно чаще в практике Web-дизайна логические операции используются при формировании условий ветвления. В этих случаях логические переменные принимают два значения: true (Истина) и false (Ложь). Для формирования условий ветвления в распоряжении дизайнера имеется три операции:

  • - инверсия (обозначается символом !);
  • - операция И (обозначается символами &&);
  • - операция ИЛИ (обозначается символами ||).

Результаты 10... 13 демонстрируют использование этих операций.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >