|
|
1
7
在我看来,这个循环基本上是惯用的,只是我写的循环类似于:
对于这个特殊的情况,我不想麻烦你
或者使用C99的可变长度阵列:
此外,如果你只使用GCC,那么你可以考虑使用,而不是对数。
http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious
刚刚注意到该行中也有一个可能的错误-您的do/while循环巧妙地处理了以下情况:
有没有更好的方法(考虑到我想要位移位的能力等…)
不知道你在这里是什么意思。如果您想对值进行位移位之类的操作,那么不要将其转换为这样的字符串。把它当作一本书
其他小事情,因为你在征求一般意见。只要你有理由这么做,这些都不是我真正要批评的:
对于最后三件事中的每一件,好的C编程实践不一定要像我这样做,而是要与您的同事/合作者商定一种编码风格。只要你们同意不争论,不“整理”彼此的代码,编码标准就可以是“随心所欲”。 |
|
|
2
4
不需要将数字转换为二进制表示;它们已经在内存中的二进制文件中表示。
|
|
|
3
3
有更好的办法吗 “,而不是问题的任何其他部分。 编辑:另外,您可能想看看流行的itoa实现,看看它们是如何在不需要数学函数的情况下实现多基转换的(来自-lm)。我知道我见过的很多itoa都非常小巧、优雅,而且仍然非常强大。 |
|
|
4
3
然后你可以做:
这比在函数中调用printf()更灵活。 您仍然需要指定一个函数来进行转换;但是,您可以在整个代码中使用printf。 Bastien Lonard的答案有一个更惯用的函数来进行转换,使用按位and代替模2,用位移位代替除法,用三值运算符代替if else。 这是一个相关的问题: |
|
|
5
2
好的,使用查找表的另一种可能的解决方案:
PD:我只检查小端的内存组织。 |
|
|
6
2
您转换为(char*)是因为您希望能够进行位移位吗?如果是,您是否知道位移位运算符?
|
|
|
7
1
还有另一种选择。这只是循环从最高有效位到最低有效位的所有位,并检查它们是否已设置。
这没有做任何其他人没有提出过的事情。对我来说,这只是一种更容易记住的方法。 |
|
|
8
1
我们把最重要的数字放在第一位,这是阿拉伯语符号的一大悲剧。当我们从最低有效数字开始时,几乎所有的计算都更容易:
如果你曾经为图灵机编写过代码(学生练习,不实用),那么关于表示的注释就会加倍。 |
|
|
D W · Python-将浮点数从2转换为10到100位小数 1 年前 |
|
|
NScara · 从Python中的二进制值解压缩文件[关闭] 1 年前 |
|
|
cake2244 · R中的应急表[副本] 2 年前 |
|
|
Linh Chi · 如何调试用于二进制搜索的Javascript代码 2 年前 |
|
|
GoodCat · 如何将这64行缩短4个字符? 2 年前 |