bits

    1熱度

    2回答

    我是C新手,並通過位操作獲得了一些練習。 假設我有n位二進制補碼數使得n> 0和n < 31.如果我知道的n提前大小,我怎麼能簽字擴展到32位? 如果n爲16位, int32_t extendMe(int16_t n) { return (int32_t) n; } 假設我有數據的定義。 假設我有一個我想簽名的n位值可以擴展到32位,我該怎麼做到這一點? 謝謝。

    1熱度

    2回答

    它被定義爲UInt是無符號整數的類型。但在這種情況下,MSB似乎仍然是一個標誌。例如,最相關的質量保證是Chisel UInt negative value error,其中找出瞭解決方法,但沒有解決問題。你能否讓我瞭解'爲什麼'? 的UInt似乎chisel3/chiselFrontend/src目錄/主/斯卡拉/ chisel3 /核心/ Bits.scala,但我不明白的細節進行定義。 UI

    0熱度

    1回答

    我想弄清楚是否有一種簡單的方法來一次修改8051端口的幾個位。 我會重新解釋我的困境更具體的風格。 我的應用程序有端口2分爲兩個功能。我們稱他們爲FA和FB。 FA依賴於低三位的輸出值,而FB依賴於剩餘的5位,但它們可以是I/O。 因爲FB中的一位是控制時鐘的輸出位,所以當我修改FA時,我不想修改FB的任何部分,反之亦然。 以下種類的命令不會爲我工作: mov P2,#07h mov P2,#8

    0熱度

    2回答

    我有一個非常困難的時刻了解BitSet.valueOf(字節陣列) 我有以下代碼:以上 byte[] a = new byte[]{(byte) 0x2D, (byte) 0x04}; //binary => 0010 1101 0000 0100 BitSet bs = BitSet.valueOf(a); System.out.println(bs); 代碼給我的{0, 2, 3,

    2熱度

    2回答

    所以看着調試器我發現我需要檢查1位是否設置爲某個值。 例如讓我們說在這個內存地址0x12345持有這四個字節0​​123699714129,我將如何去檢查是否只有8恰恰在那裏的確切點?對不起,我缺乏用詞,我甚至不知道如何真正解釋。但是,例如,如果我想檢查是否8是正確的,在上面我的第一個猜測公佈這些字節,準確的位置將嘗試這樣的事情 if(*(char*)(0x12345 + 0x2) == 8)

    1熱度

    1回答

    我正在用C++編寫一個程序,它必須儘可能少。我需要一些if/else語句的幫助。這是代碼: if (lines & 1 << ((d & 1) * 30 + 5 * l + c)) { cout << "Invalid"; } else { lines |= 1 << ((d & 1) * 30 + 5 * l + c); } 什麼我在這裏做的是:如果一個位被設置爲1,

    0熱度

    1回答

    我想要生成二進制文件,其中項目之間的平均海明距離大約爲50%。 第二個條件是距離不應低於〜40%或高於〜60%。 另一個複雜因素是項目不是按順序生成的,而是偶爾會出現,而且我不想循環所有項目以檢查和重新生成,因爲一段時間後它會變成一個緩慢的過程。 有沒有一種機制或算法來實現這一目標? 目前我使用下面的代碼: def rand(size): op = np.random.uniform()

    -4熱度

    1回答

    我有一個兩字節的字節數組,我用它作爲計數器。我需要一點一點地增加它,如: 0000 0000 0000 0000 0000 0000 0000 0001 0000 0000 0000 0010 0000 0000 0000 0011 . . . 0000 0000 1111 1111 0000 0001 1111 1111 0000 0010 1111 1111 0000 00

    1熱度

    3回答

    我正在學習位操作,然後我想到了這一點。假設我有兩個數字,第一個在[1,6]的範圍內,第二個在[0,3]的範圍內。現在第一個數字可以存儲最多3位數據,第二個數據可以存儲2位數據。我怎樣才能使用一個int32來存儲它們。謝謝。

    0熱度

    1回答

    我通過破譯編碼和麪試的位操作技術之一是如下工作: 從我到0(含)清除所有位,我們採取一個序列全部爲1(即-1),並將其左移i + 1位。這給了我們1個序列(最高有效位),然後是0個位。 int clearBitsIthrough0(int num, int i){ int mask = (-1 << (i + 1)); return num & mask; } 如何爲-1