温馨提示:本文翻译自stackoverflow.com,查看原文请点击:bit - How to properly make a bitwise shift in this 3 cases?
bit bit-shift shift

bit - 在这3种情况下,如何正确地进行按位转换?

发布于 2020-03-27 11:26:21

我正在修改一些学习资源,并且遇到了两个例子,这些例子对我来说有些棘手。

1)整数值0x80000000 >> 8的按位移位结果0x800000当0x之后的位数等于'8'时,如何使8位右移?

2)对于int值0xff00 << 8的按位移位结果0xff0000当0x之后的位数仅等于6时,如何使适当的按位左移8位?

查看更多

查看更多

提问者
szymonindy
被浏览
26
Chandan Mahto 2019-07-03 23:04

的二进制等效0x80000000值为10000000000000000000000000000000因此,将其移位8位将导致二进制数1000000000000000000000000x800000

的二进制等效0xff00值为0b1111111100000000将其移位8位将导致0b111111110000000000000000

实际上,左移和右移对数字的二进制等效项有效,而对十六进制等效项无效。如您所见,二进制等效项比十六进制等效项具有更多的数字。

但是,假设我们要进行此操作,0x80000000 >> 100那么100个移位将比二进制数字的位数大,因此结果为0x0

在左移情况下,每次左移操作都会添加其他零。