我寫帶參數的函數的表示:找到N個位長度的二進制補一些
int nbit2s(long int x, long int n){
}
我期待參加64位號x,並找出如果ñ 2位表示位長度是可能的。然而,我僅限於使用按位運算符,並排除使用運算符(例如> = < =和條件語句
例如,nbit2s(5,3)返回0,因爲該表示是不可能的。
我不找任何代碼,但只是想法,到目前爲止我的想法一直是:
- 採取第n並將其轉換成它的二進制表示。
- 左移二進制表示64的n倍來獲得的MSB和存儲在一個變量移 3.Shift向右64-N以獲得引導位,並存儲在移位
- XOR原始數與W,如果1然後是0,然後是假。
我覺得這是沿着正確的路線,但如果有人能夠解釋也許是一個更好的方法來做到這一點,或者我可能犯的任何錯誤,這將是偉大的。
'long int x'只能是32位。推薦'long long'或'uint64_t'。 – chux
我的印象是long int在mac機器上是64位,在windows機器上保持爲32位。 –
我覺得你正在做相同的課程:https://stackoverflow.com/questions/9122636/finding-how-many-bits-it-takes-to-represent-a-2s-complement-using-only-bitwise https://stackoverflow.com/questions/8204075/minimum-bits-required-for-twos-complement-number-representation – viraptor