bitwise.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { isInteger } from '../../utils/number.js';
  2. var n1 = 'number';
  3. var n2 = 'number, number';
  4. export function bitAndNumber(x, y) {
  5. if (!isInteger(x) || !isInteger(y)) {
  6. throw new Error('Integers expected in function bitAnd');
  7. }
  8. return x & y;
  9. }
  10. bitAndNumber.signature = n2;
  11. export function bitNotNumber(x) {
  12. if (!isInteger(x)) {
  13. throw new Error('Integer expected in function bitNot');
  14. }
  15. return ~x;
  16. }
  17. bitNotNumber.signature = n1;
  18. export function bitOrNumber(x, y) {
  19. if (!isInteger(x) || !isInteger(y)) {
  20. throw new Error('Integers expected in function bitOr');
  21. }
  22. return x | y;
  23. }
  24. bitOrNumber.signature = n2;
  25. export function bitXorNumber(x, y) {
  26. if (!isInteger(x) || !isInteger(y)) {
  27. throw new Error('Integers expected in function bitXor');
  28. }
  29. return x ^ y;
  30. }
  31. bitXorNumber.signature = n2;
  32. export function leftShiftNumber(x, y) {
  33. if (!isInteger(x) || !isInteger(y)) {
  34. throw new Error('Integers expected in function leftShift');
  35. }
  36. return x << y;
  37. }
  38. leftShiftNumber.signature = n2;
  39. export function rightArithShiftNumber(x, y) {
  40. if (!isInteger(x) || !isInteger(y)) {
  41. throw new Error('Integers expected in function rightArithShift');
  42. }
  43. return x >> y;
  44. }
  45. rightArithShiftNumber.signature = n2;
  46. export function rightLogShiftNumber(x, y) {
  47. if (!isInteger(x) || !isInteger(y)) {
  48. throw new Error('Integers expected in function rightLogShift');
  49. }
  50. return x >>> y;
  51. }
  52. rightLogShiftNumber.signature = n2;