明確幾個知識點
- 十進制轉(zhuǎn)換為二進制(以及十進制轉(zhuǎn)八進制米绕,十六進制等等,雖然這個題目不涉及)
- 計算機的符號數(shù)的三種表示方法
- 原碼
- 反碼
- 補碼 ==正數(shù)的補碼與原碼相同==
- ==補碼的運算:模加負數(shù)等于負數(shù)的補碼==
graph LR
A[原碼] -- 符號位不變,數(shù)值位按位取反 --> B((反碼))
A[原碼] -- 符號位不變數(shù)值位按位取反末位再加1--> C(補碼)
進制轉(zhuǎn)化
以下所有內(nèi)容都是使用python語言描述
//強大的內(nèi)置函數(shù)
hex() #十進制轉(zhuǎn)換為十六進制馋艺,以0x開頭
oct() #十進制轉(zhuǎn)換位八進制栅干,以0o開頭
bin() #十進制轉(zhuǎn)換為二進制,以0b開頭
#所以只需要二進制數(shù)的話捐祠,建議加一個切片 [2:],這樣就可以得到基本的二級制數(shù)
完整代碼
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
count = 0
if n >= 0:
s = bin(n)[2:]
else:
# 模加負數(shù)等于負數(shù)的補碼
s = bin(pow(2,32)+n)[2:]
for i in s:
if i=='1':
count+=1
return count
# write code here