...读到的数据是十六进制的吗?另外十六进制和十进制能直接做加减法乘除...
发布网友
发布时间:1天前
我来回答
共2个回答
热心网友
时间:20小时前
首先回答问题:读入的数是二进制的,但是参加计算不用考虑转换。
电脑中的数,严格地讲,都是二进制的!
对于一个常数, 在不同的数进制之间转换时,需要按一定的方法进行。
但是,不管你是什么进制的数,放在变量里,就是一样的!不需要考虑转换问题。
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
热心网友
时间:20小时前
C语言中 0x00, 0x45, 0xff,代表16进制数,12, 25,105等代表10进制
汇编中 #00000010B 代表2进制,#2FH 代表16进制,#16代表10进制
热心网友
时间:20小时前
首先回答问题:读入的数是二进制的,但是参加计算不用考虑转换。
电脑中的数,严格地讲,都是二进制的!
对于一个常数, 在不同的数进制之间转换时,需要按一定的方法进行。
但是,不管你是什么进制的数,放在变量里,就是一样的!不需要考虑转换问题。
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
热心网友
时间:19小时前
C语言中 0x00, 0x45, 0xff,代表16进制数,12, 25,105等代表10进制
汇编中 #00000010B 代表2进制,#2FH 代表16进制,#16代表10进制