小新在學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。當函式輸入的是負數時,如果一直右移,就會進入死迴圈。為了避免死迴圈,我們...