use*_*933 4 c++ idl-programming-language
我知道这是一个常见的问题,我无法弄清楚为什么我会遇到这么多麻烦.我试图将IDL代码中的一行转换为c ++
IDL:
for i = 0,7 do begin
b = ishfy(b,1)
print,b
endfor
Run Code Online (Sandbox Code Playgroud)
我的C++代码:
for(int i = 0; i < 7; i++)
{
b = b << 1;
cout << b;
}
Run Code Online (Sandbox Code Playgroud)
我的初始b是255,我希望收到254,252等.相反,我的第一位移位返回510.我认为我的问题是在移位之前没有将b转换为二进制形式.它是否正确?如果是这样,我该如何解决?
提前致谢!
<<向左移动.如果B最初是255(二进制11111111)并且你将它向左移动一个你得到111111110(在大多数机器上,int是32位宽,所以有0的空间),这是十进制的510.
所以,这个程序正常工作100%.
如果你希望它"切断"高位,使b为8位宽类型,例如char,或者它为0xFF.