| u128.js 是一个提供 128 位无符号整数运算的 JavaScript 库,旨在兼容各种主流浏览器。 示例代码: <script type="text/javascript" src="u128.js" ></script><script type="text/javascript">
 
 /*
 Namespace shorthand
 */
 var u = faultylabs.u128;
 
 /*
 Conversions to/from hex string:
 */
 var a    = u.hexval("000000bbaaaaaaaa33333333ffffffff")
 var astr = u.hex$(a)
 alert( astr == "000000bbaaaaaaaa33333333ffffffff" )
 
 /*
 Addition a + b
 */
 var a = u.hexval("1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")
 var b = u.hexval("0000000000000000000000000000001")
 var c = u.add(a, b)
 alert(u.hex$(c) == "02000000000000000000000000000000")
 
 /*
 Subtraction a - b
 */
 var a = u.hexval("b0000000000000000000000000000000")
 var b = u.hexval("00000000000000000000000000000001")
 var c = u.sub(a, b)
 alert(u.hex$(c) == "afffffffffffffffffffffffffffffff")
 
 /*
 Multiplication a * b
 */
 var a = u.hexval("78cd2bbafbd21e3")
 var b = u.hexval("de36a45d123b885")
 var c = u.mul(a, b)
 alert(u.hex$(c) == "0068dbb4c2baf8856f0df18732a6c2ef")
 
 /*
 Quotient a / b
 */
 var a = u.hexval("0068dbb4c2baf8856f0df18732a6c2ef")
 var b = u.hexval("de36a45d123b885")
 var c = u.div(a, b)
 alert(u.hex$(c) == "0000000000000000078cd2bbafbd21e3")
 
 /*
 Remainder a % b
 */
 var a = u.hexval("00000521aaaaaaa76666666bfffffff9")
 var b = u.hexval("00000521aaaaaaa00000000000000000")
 var c = u.mod(a, b)
 alert(u.hex$(c) == "00000000000000076666666bfffffff9")
 
 /* Comparison of a and b
 0 -> a == b
 1 -> a > b
 -1 -> a < b
 */
 var a = u.hexval("de36a45d123b885")
 var b = u.hexval("68dbb4c2baf8856f0df18732a6c2ef")
 var cmp = u.cmp(a, b)
 alert(cmp == -1)
 
 /*
 Binary AND  a & b
 Binary OR   a | b
 Binary XOR  a ^ b
 Binary NOT  ~a
 */
 var v55  = u.hexval("55555555555555555555555555555555")
 var vAA  = u.hexval("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
 var vFF  = u.hexval("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")
 var vOR  = u.or (v55, vAA)
 var vAND = u.and(vFF, v55)
 var vXOR = u.xor(vFF, v55)
 var vNOT = u.not(v55)
 alert(u.hex$(vOR)  == "ffffffffffffffffffffffffffffffff")
 alert(u.hex$(vAND) == "55555555555555555555555555555555")
 alert(u.hex$(vXOR) == "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
 alert(u.hex$(vNOT) == "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
 
 /*
 Left shift
 */
 var a  = u.hexval("00BBAAAAAAAA33333333FFFFFFFF")
 var la = u.shl(a, 8)
 alert(u.hex$(la) == "0000bbaaaaaaaa33333333ffffffff00")
 
 /*
 Right shift
 */
 var a  = u.hexval("0000BBAAAAAAAA33333333FFFFFFFF11")
 var ra = u.shr(a, 8)
 alert(u.hex$(ra) == "000000bbaaaaaaaa33333333ffffffff")
 
 /*
 Bit test
 */
 var a   = u.hexval("10000000000000000000000")
 var bit = u.btest(a, 88)
 alert(bit == 1)
 
 /*
 Shortcuts for the values 1 and 0
 */
 var a   = u.zero()
 var b   = u.one()
 alert(
 u.hex$(a) == "00000000000000000000000000000000" &&
 u.hex$(b) == "00000000000000000000000000000001"
 )
 
 </script>
 (编辑:鹰潭站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |