看看这个C#代码:
byte x = 1;
byte y = 2;
byte z = x + y; // ERROR: Cannot implicitly convert type 'int' to 'byte'
Run Code Online (Sandbox Code Playgroud)
对byte(或short)类型执行的任何数学运算的结果都隐式地转换回整数.解决方案是将结果显式地转换回一个字节:
byte z = (byte)(x + y); // this works
Run Code Online (Sandbox Code Playgroud)
我想知道的是为什么?它是建筑吗?哲学?
我们有:
int+ int=intlong+ long=longfloat+ float=floatdouble+ double=double那么为什么不呢:
byte+ byte=byteshort+ short= short?一点背景:我正在对"小数字"(即<8)执行一长串计算,并将中间结果存储在一个大数组中.使用字节数组(而不是int数组)更快(因为缓存命中).但是通过代码传播的大量字节转换使得它更加难以理解.
我必须在两个数组上应用xor,比如说我有:
array_1: 1 0 1 0 1 1
array_2: 1 0 0 1 0 1
Run Code Online (Sandbox Code Playgroud)
我想有一个函数接受两个数组并返回一个应用XOR的数组,所以在这种情况下我希望这个函数返回:
returned_array: 0 0 1 1 1 0
Run Code Online (Sandbox Code Playgroud)
请帮我一个算法..谢谢!
我试图在java中做一些按位操作
我有2个数组:
byte[] bitArray;
final byte [] bitMask = {1,2,4,8,16,32,64,-128};
Run Code Online (Sandbox Code Playgroud)
然后我尝试在|一个字节中的bitArray一个字节mask.
bitArray[i] = bitArray[i] | bitMask[j]
Run Code Online (Sandbox Code Playgroud)
问题是我遇到了编译器错误.
"错误可能丢失精度"找到int所需的字节
问题是如何解决它?