題目
二進制中“1”的個數
代碼實現
二進制中“1”的個數
題目描述:輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。
思路:求“1”的個數等價于求n-1與n進行“與”運算后不等于0所需要的運算次數。注意:這里的整數可能是負的,補碼的形式中的最高位是“1”,這樣會導致無限循環。因而,根據一般的機器的運算的位數(32位),需要將負數的補碼形式乘以0xffffffff,再判斷while循環的條件。
# -*- coding:utf-8 -*-
class Solution:def NumberOf1(self, n):# write herecount = 0if n < 0:n = n & 0xffffffff#對于負數,二進制的第一位是1,因而,會使得while條件判斷是死循環。#為此,設置了n<0的判斷條件,將n看做是一個有符號的數。#而且,對于Python,整數的表示位數是不受限制的,具體顯示的大小會受到#機器的限制,一般位數是32位。while n:count += 1n = (n - 1) & nreturn count
擴展題目:Leetcode中的第191題(位1的個數 https://leetcode-cn.com/problems/number-of-1-bits/)
題目描述:編寫一個函數,輸入是一個無符號整數,返回其二進制表達式中數字位數為 ‘1’ 的個數
區別在于:輸入是一個無符號整數,除去對負數的判斷,其余部分是一樣的。
結尾
親愛的讀者朋友:感謝您在繁忙中駐足閱讀本期內容!您的到來是對我們最大的支持??
正如古語所言:"當局者迷,旁觀者清"。您獨到的見解與客觀評價,恰似一盞明燈💡,能幫助我們照亮內容盲區,讓未來的創作更加貼近您的需求。
若此文給您帶來啟發或收獲,不妨通過以下方式為彼此搭建一座橋梁: ? 點擊右上角【點贊】圖標,讓好內容被更多人看見 ? 滑動屏幕【收藏】本篇,便于隨時查閱回味 ? 在評論區留下您的真知灼見,讓我們共同碰撞思維的火花
我始終秉持匠心精神,以鍵盤為犁鏵深耕知識沃土💻,用每一次敲擊傳遞專業價值,不斷優化內容呈現形式,力求為您打造沉浸式的閱讀盛宴📚。
有任何疑問或建議?評論區就是我們的連心橋!您的每一條留言我都將認真研讀,并在24小時內回復解答📝。
愿我們攜手同行,在知識的雨林中茁壯成長🌳,共享思想綻放的甘甜果實。下期相遇時,期待看到您智慧的評論與閃亮的點贊身影?!
萬分感謝🙏🙏您的點贊👍👍、收藏?🌟、評論💬🗯?、關注??💚~
自我介紹:一線互聯網大廠資深算法研發(工作6年+),4年以上招聘面試官經驗(一二面面試官,面試候選人400+),深諳崗位專業知識、技能雷達圖,已累計輔導15+求職者順利入職大中型互聯網公司。熟練掌握大模型、NLP、搜索、推薦、數據挖掘算法和優化,提供面試輔導、專業知識入門到進階輔導等定制化需求等服務,助力您順利完成學習和求職之旅(有需要者可私信聯系)?
友友們,自己的知乎賬號為“快樂星球”,定期更新技術文章,敬請關注!?????