为什么按位移位在这里用 1s 而不是 0 替换日期
why does bitwise shift replace date with 1s instead of 0 here?
对于使用位掩码的程序,我希望用二进制写数字...即要复制前 8 位x
到 z
,我写
y = 0xff000000;
z = 0;
z = (y & x) | z
x, y, z
都int
.现在使用左移和右移运算符,我想向右或向左移动 1 个y
以位屏蔽另一组位,所以我编写了以下代码
cout<< bitset<32>(y>>10) <<"n" << bitset<32>(y<<10) <<endl;
现在我期望的输出是:
00000000001111111100000000000000
00000000000000000000000000000000
但我得到了:
11111111111111111100000000000000
00000000000000000000000000000000
- 为什么输出的第一行上的新位"1"与"0"相吻合?
- 如何将电流输出更改为所需输出?
y 是一个有符号整数。在有符号整数中,最上面的位是符号位,当您右移有符号整数时,最上面的位会传播。
使用八位值:-4 为
11111100
当你右移-4时,你认为有什么意义?
你期望得到-2吗:
11111110
还是你期望得到 126?
01111110
请记住,左移相当于乘以 2,因此右移相当于除以 2(并丢弃余数)。
如果要移动有符号整数并获取无符号整数语义,请先将其强制转换为无符号整数。
相关文章:
- 模板参数替换失败,并且未完成隐式转换
- 查询SQLite数据库中的日期
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何用转义符替换字符串中的所有特殊字符
- Log4cpp:以UTC/GMT时区打印日期
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 在一个读写器队列中,我可以用volatile替换原子吗
- 用符号版本替换对函数的所有调用
- 使用C++的日期库读取时间
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 替换基于地图的所有引用
- 按平均值替换数组中的元素
- 日期格式为C++
- 如何在 C++20 计时中为日期添加天数?
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何在QTableView中排序和更改日期格式
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- Gtkmm 会不断检查 Gtk::日历上的所选日期是否发生变化
- 为什么按位移位在这里用 1s 而不是 0 替换日期