用C语言编程时,比如说我有一个整数h作为十六进制值,整数d作为十进制数。我可以在h和d之间进行加减运算吗?还是他们必须在同一个号码系统?十进制数可以用十进制数加/减吗?
回答
是的,你可以写:
int x = 100 - 0x100 + 0100;
混合了十进制与十六进制和八进制。在计算发生之前,所有的值都被转换为二进制数(编译器将在本例中进行计算;它不会在运行时计算)。和任何常量可通过已分配适当的值的int
值被替换为:
int d = 100;
int h = 0x100;
int o = 0100;
int x = d + h + o;
像基地10,16,8三人。 – chux 2015-02-11 02:20:45
为什么如果将1加到int'num'的十六进制值为'0x7fffffff'我得到'-2147483648',如果我将它改为'long'我得到正确的编号'2147483648''? – Zizoo 2017-05-04 20:57:27
@Zizoo:名义上,这是一个可以单独提出/回答的新问题。如果你正在使用'sizeof(int)== 4 && sizeof(long)== 8'(例如64位Unix系统;不是Windows 64)的机器,那么这就是预期的, 或多或少。正式地,当值为'int'时,将1加到0x7FFFFFFF导致未定义的行为,因为它绕过(2^31)-1;通常情况下,它变为0x80000000,这是最负的32位有符号整数(在2的补码机器上)的十六进制表示。 _ [... continue ...] _ – 2017-05-04 21:04:59
是它们可以,例如
int x;
x = 0x0F + 10;
printf("%d\n", x);
输出:
25
表示你使用并不重要,它最终都将转换为二进制。
- 1. 十六进制加减
- 2. 加/减十六进制
- 3. VBA隐藏十进制和十六进制的负数十进制数
- 4. jquery添加十进制数
- 5. C#十进制数加倍?
- 6. 将八进制数转换为十进制和十六进制
- 7. 为十进制数
- 8. 十进制数104
- 9. 使用十进制或十六进制
- 10. 从十六进制到十进制,二进制到十进制和八进制到十进制程序C++
- 11. 十六进制U2减法
- 12. 将十进制转换为十六进制和十六进制
- 13. 添加十六进制值以得到十六进制结果
- 14. 如何转换OCaml中十六进制,十进制,十进制和二进制数之间的数字?
- 15. 将非十进制数转换为十进制数
- 16. 将十进制数截断为一个十进制数
- 17. as3 - 按十进制整数十进制数的按钮
- 18. 将十进制数转换为二进制/十六进制/八进制符号
- 19. 在intellij中可以同时将int看作十进制和十六进制吗?
- 20. 十六进制数字是负数吗?
- 21. 使用十六进制而不是十进制更有效吗?
- 22. 用于大数字的十进制到十六进制的Python
- 23. 十六进制,八进制,二进制到十进制(C++)
- 24. 二进制,八进制,十六进制到十进制程序
- 25. 加十六进制
- 26. 我可以用二进制而不是十六进制嵌入数字吗?
- 27. 十六进制为十进制
- 28. 十六进制和十进制转换
- 29. 十六进制串&十六进制
- 30. Javascript十进制到十六进制
给它一个镜头,看看! http://ideone.com/是一个在线编译器,您可以在不安装任何软件的情况下使用这些测试程序。 – 2015-02-11 02:16:26
我认为这个问题也混淆了“数字”和“数值”。 0x12,0d18,0o22和0b00010010都是代表相同“值”的“数字”。添加时,您可以添加值 - 不是数字。 – 2015-02-11 02:21:24
您在“数字”和“表示”之间混淆。在内部,电脑有“数字”。外部(你看到并键入)有“表示”。十进制是一种表示。十六进制是一种表示。即使是“Q”也是一种表现。如果你输入一个十六进制表示和一个十进制表示(并以某种方式告诉计算机哪一个),它们都会被内部转换为“数字”,您可以添加或减少或不管其他内容,而不用担心用于输入数字的表示是十六进制或小数。 – 2015-02-11 02:21:28