我正在尝试对一个字节执行按位非操作,像这样:
byte b = 125;
byte notb = ~b; // Error here
这段代码无法起作用,因为not运算符只能用于整型数据。我可以采用下面的方式,这样看上去似乎会起作用:
byte b = 125;
byte notb = (byte)((~b) & 255);
这种方法有效是因为它将数字转换成二进制后,清零第8位后的所有比特位,再将其转换为字节。但我想知道是否有更好的方法或者我是否忽略了一些更简单的方法?
int
以外的类型上的位运算,因为结果总是被强制转换为int
,所以需要你作为程序员来修复微软的疏忽,通过掩码操作和将其转换回你想要的类型。 - Jim Fell