首页 > 编程知识 正文

给定一个一维正整数型数组(0算不算整数)

时间:2023-05-03 05:32:45 阅读:77960 作者:3268

2021-05-03 :一种方法,它给出非负整数num,不使用循环语句,返回=num且最接近num的有2的幂。

福大解答2021-05-03 :

32位整数,N=32。

1 .非负整数用int表示。 时间的复杂性是logN。

在整数减去1的二进制格式中,1右边的所有数字都为1,最后加上1则生成必须返回的结果。

2 .非负整数用float64表示。 因为浮点数隐式使用log (整数)的结果,所以复杂度为o ) 1。 这个方法有点狡猾。 标题中有整数,但这里使用的是float64,所以不是整数,但想法不同,所以采用了。

浮点数=符号位代码尾数。 如果尾数不为0,则尾数为0,步骤代码为1。 这是要返回的浮点数的存储结果。如果尾数为0,则当前浮点数是要返回的结果。

代码是用谷歌写的。 代码如下。

包主

导入(

' fmt '

' math '

func main () }

for i :=1; i=129; i {

fmt.println(I,tablesizefor1(I ),tablesizefor2) float64 ) )

}

}

已知//n是正数

返回大于或等于//且最接近n、有2的乘方的值

functablesizefor1(nint ) int {

n--

n |=n 1

n |=n 2

n |=n 4

n |=n 8

n |=n 16

returntwoselectone (n0,1,n 1 ) )。

}

functwoselectone(conditionbool,a int,b int ) int {

if condition {

返回a

} else {

返回b

}

}

functablesizefor2(afloat64 ) float64 {

_,exp,frac :=从浮动64 (a ) )

if frac!=0 {

exp

frac=0

}

returngetfloat64(0,exp,frac )。

}

//根据浮点数求出编码位、步码、尾数

funcfromfloat64(ffloat64 )、uint64、uint64、uint64 ) {

u:=math.float64bits(f )。

return u 63,u 52 0b 00000111 _ 111111 _ 1111111,u0b 0000000000 _ 000001111 _ 11111111 _ 1111111111 _ 1111111111111111111111111111111111111111111111111111111111111111111111111

}

//根据符号位、阶码、尾数求出浮点数

funcgetfloat64(suint64、exp uint64、frac uint64 ) float64 {

s=s 63

exp=exp 0b00000111_11111111 52

frac

返回矩阵. float 64 from bits (s )。

}

执行结果如下。

***

[左神java代码] 65https://github.com/algorithm Zuo/coding-for-great-offer/blob/main/src/class 01/code 03 _ near

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。