bit-shift

    -2熱度

    4回答

    我想它在一個uint64_t中移動0xFF的3個字節的左,存儲,這應該是這樣工作的: uint64_t temp = 0xff << 24; 這就產生了0xffffffffff000000 的值是最肯定不是預期的0xff000000。 但是,如果我移動它少於3個字節,它會導致正確的答案。 此外,嘗試將0x01左移3個字節確實有效。 這裏是我的輸出: 0xff shifted by 0 bytes:

    4熱度

    5回答

    的,我注意到一些奇怪的行爲與支架 bitshifting #include <stdio.h> int main(void) { unsigned char c; unsigned char d; c = 153; c = (c << 7) >> 7; printf("%d\n", c); d = 153; d = (

    -4熱度

    1回答

    #include <iostream> #include <string> #include <fstream> using namespace std; void shiftLeft (char myarray[], int size, int shiftBy) { if(shiftBy > size){ shiftBy = shiftBy - size;

    -2熱度

    2回答

    我正嘗試在C++中使用位數組數據結構。這是簡單的好奇心,但我應該怎麼解釋: uint64_t a = 1; uint64_t b = a << 1; cout << (a == (a << 64)) << endl; // get 1 cout << (a == (b << 63)) << endl; // get 0 似乎是一個< < x是環時x >= 64,但墊用零時x < 64。

    1熱度

    1回答

    所以,我有我像02324020這是從MIPS指令的機器代碼以數字的txt文件:add $t0, $s1, $s2 當它在二進制和切成6,5,5,5,5節,6所採取的數字是:0,17,18,8,0,20 這給出了指令的概念:R [rd] = R [rs] + R [rt]和26- 31是操作碼0意味着R格式,rd = 8,rs = 17,rt = 18 我試圖掩蓋位,所以我只看到21-25之間的位,

    4熱度

    1回答

    當你運行該代碼: #![allow(exceeding_bitshifts)] fn main() { const NUMBER: u64 = 0b_10101010; fn print_shift(i: u32) { println!("{:b}", NUMBER >> i); } print_shift(65); print

    28熱度

    2回答

    C11§6.5.7第5段: 的E1 >> E2結果是E1右移E2比特位置。如果 E1具有無符號類型或者如果E1具有帶符號類型和 非負值,則結果的值是E1/2*^E2的商的整數部分。 如果E1具有簽名類型和負值 值,則結果值是實現定義的。 但是,該viva64參考文件說: int B; B = -1 >> 5; // unspecified behavior 我跑GCC此代碼,它總是給輸出-1

    0熱度

    1回答

    我有一些要存儲在signed 32 bit integer上的signed 8 bit值。 我這樣做,移動使用逐移值左: const auto value1 = char{90}; const auto value2 = char{80}; const auto value3 = char{70}; const auto value4 = char{60}; auto merged_va

    0熱度

    2回答

    我需要以下問題的幫助: 寫一個表達式導致整數x的最低有效字節被設置爲0,但所有其他位不變。 例如:0x98234493變爲0x98234400。 我很困惑如何訪問最不重要的字節。 public static int Q3(int x) { return (x & 0xFFFFFFFF); } 我在做什麼錯?

    1熱度

    3回答

    我得到兩個java字節作爲輸入,共同表示一個16位有符號整數。我需要將它轉換爲一個單一的java整數(當然,簽名)。我想出了一個「醜陋的」解決方案,其中包括轉換爲int,然後轉換爲short,然後轉換爲int。有更短更優雅的方式嗎? 我的代碼如下: public int convert(byte b1, byte b2){ int i1 = (int) (((b2 << 8) + (b1