关于位运算

<< :左移运算符,向左移若干位,高位丢弃,低位补零。x << 1,相当于 x 乘以 2(不溢出的情况下)。

>> :带符号右移,向右移若干位,高位补符号位,低位丢弃。正数高位补 0,负数高位补 1。x >> 1,相当于 x 除以 2。

>>> :无符号右移,忽略符号位,空位都以 0 补齐。

注意点:

1. 注意遇见负数的时候,一般是针对其补码进行运算,得出结果的时候需要先计算出其对应的原码,然后才能得到结果。

 

补码 -> 原码 转换(原码 -> 补码 一样):

  1. 如果符号位为0,原码 == 补码。
  2. 如果符号位为1:
    • 符号位以外的位全部取反(反码);
    • 加1。

举个例子,-10的原码为: 10000000000000000000000000001010,其反码为11111111111111111111111111110101,其补码为11111111111111111111111111110110。

 

2. 位移的位置会做模运算,假设是int类型的,则10 >> 33 等同于 10 >> (33 % 32),因为int的比特位数是32。

posted @   Vege_dog  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示