@@ -387,3 +387,82 @@ Int.clamp(42, ~min=50, ~max=40) == 50
387387```
388388*/
389389let 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