二进制、八进制、十六进制5
6.2.5十六进制数转换为十进制数
二进制,使用两个阿拉伯数字:0和1;
八进制,使用八个阿拉伯数字:0,1,2,3,4,5,6,7;
十进制,有十个阿拉伯数字:0到9;
十六进制,有十六个阿拉伯数字...等等,阿拉伯人还是印度人只发明了10位数?
十六进制是每16进1,但是我们从0到9只有十个数字,所以我们用A,B,C,D,E,F这五个字母分别代表10,11,12,13,14,15。字母不区分大小写。
十六进制数的第0位的权重是16的0次方,第1位的权重是16的1次方,第2位的权重是16的2次方...
所以在第n(n从0开始)位上,如果是,则数字X (X大于等于0,X小于等于15,即f)代表X * 16的n次方。
假设有一个十六进制数2AF5,那么如何转换成十进制?
纵向计算:
2AF5换算成十进制:
第0名:5 * 160 = 5
第一名:F * 161 = 240
第二名:A * 162 = 2560
第三名:2 * 163 = 8192+
直接计算是:
5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997
(别忘了,在上面的计算中,A代表10,而F代表15)
现在可以看出,所有十进制转换成十进制的关键在于它们的权重不同。
假设有人问你,十进制数1234为什么是1234?你可以给他这样一个公式:
1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100
6.2.6十六进制数的表示方法
如果不使用特殊的书写形式,十六进制数会与十进制数混合。任意数:9876,你分不清是十六进制还是十进制。
C,C++规定十六进制数必须以0x开头。例如,0x1代表十六进制数。1代表十进制。此外,如0xff、0xFF、0X102A等。x也不区分大小写。(注意:0x中的0是数字0,不是字母O)
以下是一些用法示例:
int a = 0x100F
int b = 0x 70+a;
到目前为止,我们已经学习了所有的十进制系统:十进制、八进制和十六进制。最后一点很重要。在C/C++中,有正负十进制数。例如,12表示正12,而-12表示负12。但是八进制和十六进制只能用无符号正整数。如果你在代码里写:-078,或者:-0xF2,C,C++,它不会把它当成负数。
6.2.7在转义字符中使用十六进制数
转义字符后面还可以跟一个十六进制数来表示一个字符。如第6.2.4小节所述?字符,它可以有以下表达式:
?//直接输入字符
\ 77 '//使用八进制,在这种情况下,可以省略开头的0。
\ 0x3f '//使用十六进制
同样,本小节仅用于理解。除了空字符用八进制数' [32] '表示外,我们很少用后两种方法来表示一个字符。
位律师回复
0条评论