我想要一个方法,将一个数字中的每个位与一个因子相乘。例如,如果因子是3,则在使用该数字的下一位之前,该数字中的每个位使用三次。 我正在使用GLSL。
答案 0 :(得分:0)
用C#
做了吗private int DuplicateBitsByFactor(int value, int factor)
{
var size = sizeof(ushort) * 8;
var binaryString = new StringBuilder();
for (var i = size; i >= 0; i--)
for (var j = 0; j < factor; j++)
binaryString.Append(GetBitOnLocation(value, i));
var duplicateBitsByFactor = Convert.ToInt32(binaryString.ToString(), 2);
return duplicateBitsByFactor;
}
private int GetBitOnLocation(int value, int location)
{
return (value & (1 << location)) == 0 ? 0 : 1;
}
任何优化?