math/big包之Int-------有理数
在这里定义了一个Int的类型,在这个类型中包括了对数字的bit,加减乘除,以及位运算等操作。
下面记录一下几个是常用的几种方法
type Word
type Word uintptr
Word代表一个多精度无符号整数的单个数字。
type Int
type Int struct {
// 内含隐藏或非导出字段
}
Int类型代表多精度的整数,零值代表数字0。
func NewInt
func NewInt(x int64) *Int
创建一个值为x的*Int。
func (*Int) Bits
func (x *Int) Bits() []Word
提供了对x的数据不检查而快速的访问,返回构成x的绝对值的小端在前的word切片。该切片与x的底层是同一个数组,本函数用于支持在包外实现缺少的低水平功能,否则不应被使用。
func (*Int) Bit
func (x *Int) Bit(i int) uint
返回第i个字位的值,即返回(x>>i)&1。i必须不小于0。
func (*Int) MulRange
func (z *Int) MulRange(a, b int64) *Int
将z设置为区间[a, b]内所有整数的乘积A(a, b),并返回z。如果a>b会将z设为1并返回。
func (*Int) Binomial
func (z *Int) Binomial(n, k int64) *Int
将z设为k次二项式展开第n项的系数C(n, k),并返回z。
func (*Int) Rand
func (z *Int) Rand(rnd *rand.Rand, n *Int) *Int
将z设为一个范围在[0, n)的伪随机值,并返回z。
func (*Int) Sign
func (x *Int) Sign() int
返回x的正负号。x<0时返回-1;x>0时返回+1;否则返回0。
func (*Int) Cmp
func (x *Int) Cmp(y *Int) (r int)
比较x和y的大小。x
func (*Int) Not
func (z *Int) Not(x *Int) *Int
将z设为^x并返回z(按位取反)。
func (*Int) And
func (z *Int) And(x, y *Int) *Int
将z设为x & y并返回z(按位且)。
func (*Int) Or
func (z *Int) Or(x, y *Int) *Int
将z设为x | y并返回z(按位或)。
func (*Int) Xor
func (z *Int) Xor(x, y *Int) *Int
将z设为x ^ y并返回z(按位异或)。
func (*Int) AndNot
func (z *Int) AndNot(x, y *Int) *Int
将z设为x & (^y)并返回z(按位减)。
func (*Int) Lsh
func (z *Int) Lsh(x *Int, n uint) *Int
将z设为x << n并返回z(左位移运算)。
func (*Int) Rsh
func (z *Int) Rsh(x *Int, n uint) *Int
将z设为x >> n并返回z(右位移运算)。
func (*Int) Abs
func (z *Int) Abs(x *Int) *Int
将z设为|x|并返回z。
func (*Int) Neg
func (z *Int) Neg(x *Int) *Int
将z设为-x并返回z。