牛客網 124C 有趣的二進位制

2021-08-20 03:32:27 字數 721 閱讀 7656

小新在學c語言的時候,鄺老師告訴他double型別的資料在表示小數的時候,小數點後的有效位是有限的,但是沒有告訴他這是為什麼,後來他發現0.1的二進位制是乙個無限迴圈小數0.000110011001100110011001100···,如果只取27位小數,再轉換成十進位制的話就變成了0.09999999403953552,小新開心的解決了這個問題。與此同時,小新又有了乙個新的問題:乙個數在64位二進位制補碼表示下,一共有多少個1。因為小數有無解的情況,所以我們保證輸入的都是整數。

有多組資料,每一行為乙個數字n。
輸出這個數字在二進位制補碼下1的個數。

示例1輸入

輸出

思路:本來是想自己把負數轉換成其補碼,但是一直wawawawa。。。後來聽大佬說加個unsigned 就a了,果然...

後來就琢磨這個東西的原理,然而竟然真的是存的就是其補碼。。然後就很簡單了,。。。

**:

#includeusing namespace std;

#define inf 0x3f3f3f3f

#define mod 1000000007

unsigned long long num,n,ans,x,er[66];

int main()

while(~scanf("%lld",&n))

cout<}

}

牛客 二進位制數(C )

大家都知道,資料在計算機裡中儲存是以二進位制的形式儲存的。有一天,小明學了c語言之後,他想知道乙個型別為unsigned int 型別的數字,儲存在計算機中的二進位制串是什麼樣子的。你能幫幫小明嗎?並且,小明不想要二進位制串中前面的沒有意義的0串,即要去掉前導0。每行有乙個數字n 0 n 10 8 ...

C 有趣的二進位制

小新在學c語言的時候,鄺老師告訴他double型別的資料在表示小數的時候,小數點後的有效位是有限的,但是沒有告訴他這是為什麼,後來他發現0.1的二進位制是乙個無限迴圈小數0.000110011001100110011001100 如果只取27位小數,再轉換成十進位制的話就變成了0.099999994...

二進位制中1的個數(牛客網(六))

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。public class solution return count 首先想到的是沒有考慮負數的情況。負數右移高位補1,正數右移高位補0 負數 正數左移低位補0。當函式輸入的是負數時,如果一直右移,就會進入死迴圈。為了避免死迴圈,我們...