這裏我有一個二進制字符串,例如 - "01010011"
。設置位的位置是= 0, 1, 4, 6
(從右到左)。我必須做一系列的操作。如何解除二進制字符串中的第k個設置位
for binary string - 01010011
unset the 0th set bit. - 01010010 (new set bit positions - 1, 4, 6)
unset the 0th set bit - 01010000 (new set bit positions - 4, 6)
unset the 1st set bit - 00010000 (new set bit positions - 4)
正如您在每次操作後可以看到的,我的二進制字符串發生了變化,並且應該對此進行新的操作。
我的做法是製作二進制字符串的副本並循環k-1次並取消設置最右側的位。在k-1循環之後,我最右邊的設置位將是實際的第k位,我可以得到這個位置並在原始二進制中取消這個位置。但是這種方法對我來說效率很低。
我需要一些有效的方法和c/C++(bitset)或python代碼,非常感謝。
注:
The kth bit will be always set in my binary string
是您的二進制字符串實際文本與「0」和「1」-s?..或者您試圖操縱整數 – Pavel
閱讀您的描述,因爲數字沒有意義。你從最後數到數,然後從開始,你將第0比特再次設置兩次等等。你是否想讓人困惑? – Pavel
我將在C++中使用bitset數據結構。我甚至可以使用整數(例如將二進制字符串轉換爲整數並進行操作) – Atul