位運算總結

2022-03-04 20:57:30 字數 1563 閱讀 6051

1、位運算符號&,|,^,~(取反,不分正負數),<<(標準規定在右邊補0),>>(正數則左邊補0,負數標準沒有規定在左邊補充的數字,分為邏輯右移和算術右移,具體由編譯器決定,windows平台和gcc採取算術右移即負數補1)

2、常見的二進位制位的變換操作

下面列舉了一些常見的二進位制位的變換操作。

下面列舉了一些常見的二進位制位的變換操作。

功能 | 示例 | 位運算

去掉最後一位 | (101101->10110) |

在最後加乙個0 | (101101->1011010) |

在最後加乙個1 | (101101->1011011) |

把最後一位變成1 | (101100->101101) |

把最後一位變成0 | (101101->101100) |

最後一位取反 | (101101->101100) |

把右數第k位變成1 | (101001->101101,k=3) |

把右數第k位變成0 | (101101->101001,k=3) |

右數第k位取反 | (101001->101101,k=3) |

取末三位 | (1101101->101) |

取末k位 | (1101101->1101,k=5) |

取右數第k位 | (1101101->1,k=4) |

把右邊連續的1變成0 | (100101111->100100000) |

把右起第乙個0變成1 | (100101111->100111111) |

把右邊連續的0變成1 | (11011000->11011111) |

功能 | 示例 | 位運算

去掉最後一位 | (101101->10110) | x >> 1

在最後加乙個0 | (101101->1011010) | x << 1

在最後加乙個1 | (101101->1011011) | (x << 1)|1

把最後一位變成1 | (101100->101101) | x | 1

把最後一位變成0 | (101101->101100) | (x | 1)-1或者

最後一位取反 | (101101->101100) | x ^ 1

把右數第k位變成1 | (101001->101101,k=3) | x | (1 << (k-1))

把右數第k位變成0 | (101101->101001,k=3) | x & ~(1 << (k-1))

右數第k位取反 | (101001->101101,k=3) | x ^ (1 << (k-1))

取末三位 | (1101101->101) | x & 7

取末k位 | (1101101->1101,k=4) | x & ((1 << k)-1)

取右數第k位 | (1101101->1,k=4) | (x >> (k-1)) & 1

把右邊連續的1變成0 | (100101111->100100000) | x & (x+1)

把右起第乙個0變成1 | (100101111->100111111) | x | (x+1)

把右邊連續的0變成1 | (11011000->11011111) | x | (x-1)

位運算的作用

1.按位與運算按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 00000001 1的二進位制補碼 ...

Java位運算子詳解

按位與運算子 參加運算的兩個資料,按二進位制位進行 與 運算。運算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩位同時為 1 結果才為 1 否則為0 例如 3 5 即 0000 0011 0000 0101 0000 0001 因此,3 5的值得1。另,負數按補碼形式參加按位與運算。與...

定點補碼一位乘的運算方法

按乘數為正 負兩種情況討論 1.被乘數 x 補符號任意,乘數 y 補為正 設 x 補 y 補 根據補碼定義可推得 x 補 2 x 2n 1 x mod2 y 補 y 其中x,y為真值.故 x 補 y 補 2n 1 x y 2n 1 xy 21 2n 2 y1y2.yn xy 注意被2n乘已成為正整數...