将长 64 位十进制转换为二进制
Converting Long 64-bit Decimal to Binary
好的,尽管我仍然遇到问题,但我要完成的事情相当简单。
这是我的代码:
- (NSString*)toBin:(long)dec
{
long num = dec;
NSString *res = [NSString string];
for (long i=63; i>=0; i--)
{
long div = 1<<i;
if ((num&div)==div) res = [res stringByAppendingString:@"1"];
else res = [res stringByAppendingString:@"0"];
}
return res;
}
这就是我测试它的方式:
for (long i=1; i<10; i++)
{
NSLog(@"%u = %@",i,[self toBin:(long)i]);
}
但是,上述输出为:
1 = 0000000000000000000000000000000100000000000000000000000000000001
2 = 0000000000000000000000000000001000000000000000000000000000000010
3 = 0000000000000000000000000000001100000000000000000000000000000011
4 = 0000000000000000000000000000010000000000000000000000000000000100
5 = 0000000000000000000000000000010100000000000000000000000000000101
6 = 0000000000000000000000000000011000000000000000000000000000000110
7 = 0000000000000000000000000000011100000000000000000000000000000111
8 = 0000000000000000000000000000100000000000000000000000000000001000
9 = 0000000000000000000000000000100100000000000000000000000000001001
因此,它几乎是正确的(至于最后 32 位),尽管它似乎在前 32 位复制自己。我猜这与我的long
大小有关,但sizeof(long)
返回8
.有什么想法吗?
此表达式:
long div= 1<<i;
是一个整数,不是一个长。所以你得到一个只有 32 位的整数(如果我只代表我的机器,请原谅)。所以只需生成一个 64 位表达式:
long div = 1l<<i;
相关文章:
- C++从二进制转换为十进制数
- 我写的 ASCII 到二进制转换器C++向后显示二进制,如何使其正确显示?
- 十进制到二进制转换器 c++
- 将二进制转换为十进制,我如何要求用户仅输入二进制
- 十进制,包括负到 32 位二进制转换器
- 输入 1024 后十进制到二进制转换的输出错误?
- C 二进制转换为双精度的转换运算符
- 将二进制转换为负整数
- 如何将 32 位编译二进制转换为 64 位
- 如何在 C++ 中将二进制转换为十六进制
- 如何理解 c++ 中的 MNIST 二进制转换器?
- 以下对二进制转换代码的小数如何工作
- 具有递归功能的二进制转换给出一个奇数值
- 了解C++位操作中的二进制转换实现
- 编写将二进制转换为文本C 6的程序
- 反射格雷码到二进制转换中的幻数
- 为什么我总是必须除以 49 才能得到二进制转换器 + cout 歧义的正确答案?
- 如何使用库将二进制转换为十进制<bitset>?
- C++二进制转换为十进制,八进制
- 脚本到二进制转换和对象序列化