簡體   English   中英

使用位操作,返回所有奇數位設置為 1 的字

[英]Using bit manipulations, return word with all odd-numbered bits set to 1

這個問題是我的編碼 class 中一個更大的編碼項目的一部分,介紹 C。該項目的目標是習慣位操作和浮點數。 這樣做,在限制條件下會出現一些問題。 這是這個問題:

 /* 
 * OddBits - return word with all odd-numbered bits set to 1
 *   Legal operations: | <<
 *   Max operations: 6
 *   Rating: 2
 */

如你所見,對於他的問題,我只能用 | 和<<。 還有一些其他的假設也沒有在這個問題中列出。 他們是; 沒有大於 0xFF 的常量,假定為 32 位機器,並且沒有諸如 do、if、while 或 else 之類的語句。 也不能將變量轉換為無符號。

這是我當前的代碼:

int OddBits(void) {
  int x;
  return (x | (x << 1)) | ((x << 1) << 1);
}

評分軟件拋出的錯誤信息是:

ERROR: Test OddBits() failed...
...Gives 0[0x0]. Should be -1431655766[0xaaaaaaaa]

如果有人能解釋我的方法出了什么問題以及如何解決它,我將不勝感激。

我希望這個能幫上忙:

int OddBits(void) {
  return 0x55 | (0x55 << 8) | (0x55 << 16) | (0x55 << 24);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM