gpt4 book ai didi

algorithm - 从二进制数中提取奇数位的最佳方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:52:14 24 4
gpt4 key购买 nike

给定一个 64 位数字,我需要从中提取每一位,并将其转换为数字:

decimal:  357
binary: 0000 0001 0110 0101
odd bits: 0 0 0 1 1 0 1 1
decimal: 27

有什么好的算法可以做到这一点吗?不,不是硬件,这是用于现实世界的:)

最佳答案

我会一次执行两个算术右移(直到二进制数的长度)。我的逻辑中使用的这个>>是算术移位。

(Note: In C language, right shifts may or may not be arithmetic!)

喜欢,

int count=0;
bit=extractLastbit(binary_representation_of_the_number);

while(count!=binaryLength){
// binaryLength is the length of the binary_representation_of_the_number
binary_representation_of_the_number=binary_representation_of_the_number>>2;

bit.appendLeft(extractLastbit(binary_representation_of_the_number);
count=count+2;
}

在哪里,

extractLastBit() 提取二进制数的LSB;appendLeft() 将新提取的位移到旧位的左侧。

关于algorithm - 从二进制数中提取奇数位的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30857819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com