这是面试问题。请告诉我这个答案。
number-10010011.now我们需要将前两位换成第3和第4位。 输出10110001。 相同的数字,但输出10000111。
2)这是资格专访。 现在我们需要反转一个字符串。
输出 - 采访高通是这个。
但没有使用strtok库。 请告诉我如何做这个程序。 我在网上搜索但没有得到正确的答案。 提前谢谢。
答案 0 :(得分:0)
bitshift操作中的第一个问题:
right = 10010011 & 00000011 // right = 00000011
left = 10010011 & 00110000 // left = 00010000
fix = 10010011 & 11001100 // fix = 10000000
right = right << 4 // right = 00110000
left = left >> 4 // left = 00000001
result = fix | right | left // result = 10110001
所以我做的是把比特分成那些不改变的(从左边:1,2,5,6)左边的一组(3和4)和一个右边的组(7和8)然后向左移动分组到7和8,右到3和4.然后再次组合修复,左右。
字符串反转也可以非常直接地进行,只需迭代字符串交换字符:
word = "hello world"
for(int i = 0; i <= word.Length/2; i++)
help = word[i]
word[i] = word[word.Length-i]
word[word.Length-i] = help
// dello worlh,dlllo woreh,...
对于单词反转,您也可以使用该算法(revert(string)):
reverted = revert(input)
words = reverted.split(" ")
for(int i=0; i<words.Length; i++)
words[i] = revert(words[i])
words.join(" ")