搜索

...读到的数据是十六进制的吗?另外十六进制和十进制能直接做加减法乘除...

发布网友 发布时间:2天前

我来回答

2个回答

热心网友 时间:1天前

首先回答问题:读入的数是二进制的,但是参加计算不用考虑转换。

电脑中的数,严格地讲,都是二进制的!
对于一个常数, 在不同的数进制之间转换时,需要按一定的方法进行。

但是,不管你是什么进制的数,放在变量里,就是一样的!不需要考虑转换问题。
a=254,你可以想成是16进制:0xfe,也可想成二进制:11111110
反之:
a=0x80,你可以想成是10进制:128,也可以是二进制:10000000

变量赋值后,参加计算,不管是什么“制”,直接算就是了。如
a=123,b=0xa9,一个十进制,一个十六进制。存入变量后,都是二进制。
要乘:c=a*b
要加:c=a+b
不需要考虑进制问题。

不过:如果要从变量中取得个位,十位的话,就有所不同了:
如:取10进制个位:a%10
取16进制个位要写成:a%0x10 或 a%16
======================================
有一种特殊情况:BCD码形式
这是一种特殊的保存数据方法,即每4位二进制只保存0-9的数,这种情况,它是不能直接参加计算的。
例如,BCD的23(二进制是0010 0011),你不能当10进制23(二进制0001 0111),也不能当16进制0x23(二进制0010 0011)。
因为:BCD的23的形式是0010 0011,其值的大小是0001 0111

热心网友 时间:1天前

C语言中 0x00, 0x45, 0xff,代表16进制数,12, 25,105等代表10进制
汇编中 #00000010B 代表2进制,#2FH 代表16进制,#16代表10进制

热心网友 时间:1天前

首先回答问题:读入的数是二进制的,但是参加计算不用考虑转换。

电脑中的数,严格地讲,都是二进制的!
对于一个常数, 在不同的数进制之间转换时,需要按一定的方法进行。

但是,不管你是什么进制的数,放在变量里,就是一样的!不需要考虑转换问题。
a=254,你可以想成是16进制:0xfe,也可想成二进制:11111110
反之:
a=0x80,你可以想成是10进制:128,也可以是二进制:10000000

变量赋值后,参加计算,不管是什么“制”,直接算就是了。如
a=123,b=0xa9,一个十进制,一个十六进制。存入变量后,都是二进制。
要乘:c=a*b
要加:c=a+b
不需要考虑进制问题。

不过:如果要从变量中取得个位,十位的话,就有所不同了:
如:取10进制个位:a%10
取16进制个位要写成:a%0x10 或 a%16
======================================
有一种特殊情况:BCD码形式
这是一种特殊的保存数据方法,即每4位二进制只保存0-9的数,这种情况,它是不能直接参加计算的。
例如,BCD的23(二进制是0010 0011),你不能当10进制23(二进制0001 0111),也不能当16进制0x23(二进制0010 0011)。
因为:BCD的23的形式是0010 0011,其值的大小是0001 0111

热心网友 时间:1天前

C语言中 0x00, 0x45, 0xff,代表16进制数,12, 25,105等代表10进制
汇编中 #00000010B 代表2进制,#2FH 代表16进制,#16代表10进制
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top