@@ -387,3 +387,82 @@ Int.clamp(42, ~min=50, ~max=40) == 50
387
387
```
388
388
*/
389
389
let clamp: (~min: int=?, ~max: int=?, int) => int
390
+
391
+ module Bitwise: {
392
+ /**
393
+ `land(n1, n2)` calculates the bitwise logical AND of two integers.
394
+
395
+ ## Examples
396
+
397
+ ```rescript
398
+ Int.Bitwise.land(7, 4) == 4
399
+ ```
400
+ */
401
+ external land: (int, int) => int = "%andint"
402
+
403
+ /**
404
+ `lor(n1, n2)` calculates the bitwise logical OR of two integers.
405
+
406
+ ## Examples
407
+
408
+ ```rescript
409
+ Int.Bitwise.lor(7, 4) == 7
410
+ ```
411
+ */
412
+ external lor: (int, int) => int = "%orint"
413
+
414
+ /**
415
+ `lxor(n1, n2)` calculates the bitwise logical XOR of two integers.
416
+
417
+ ## Examples
418
+
419
+ ```rescript
420
+ Int.Bitwise.lxor(7, 4) == 3
421
+ ```
422
+ */
423
+ external lxor: (int, int) => int = "%xorint"
424
+
425
+ /**
426
+ `lnot(n)` calculates the bitwise logical NOT of an integer.
427
+
428
+ ## Examples
429
+
430
+ ```rescript
431
+ Int.Bitwise.lnot(2) == -3
432
+ ```
433
+ */
434
+ let lnot: int => int
435
+
436
+ /**
437
+ `lsl(n, length)` calculates the bitwise logical left shift of an integer `n` by `length`.
438
+
439
+ ## Examples
440
+
441
+ ```rescript
442
+ Int.Bitwise.lsl(4, 1) == 8
443
+ ```
444
+ */
445
+ external lsl: (int, int) => int = "%lslint"
446
+
447
+ /**
448
+ `lsr(n, length)` calculates the bitwise logical right shift of an integer `n` by `length`.
449
+
450
+ ## Examples
451
+
452
+ ```rescript
453
+ Int.Bitwise.lsr(8, 1) == 4
454
+ ```
455
+ */
456
+ external lsr: (int, int) => int = "%lsrint"
457
+
458
+ /**
459
+ `asr(n, length)` calculates the bitwise arithmetic right shift of an integer `n` by `length`.
460
+
461
+ ## Examples
462
+
463
+ ```rescript
464
+ Int.Bitwise.asr(4, 1) == 2
465
+ ```
466
+ */
467
+ external asr: (int, int) => int = "%asrint"
468
+ }
0 commit comments