C语言中"按位与"&运算中如果是两个负数,先取反“与”,所得的结果是否要写成原码?
发布网友
发布时间:2022-05-19 02:37
我来回答
共4个回答
热心网友
时间:2024-03-03 09:49
不是,
如果对无符号型,都是用原码表示.而对有符号型,计算机首先将你写的10进制,转换成2进制,然后将2进制(即原码)取反,变成反码,最后反码再加1,得补码.用补码形式进行逻辑运算或者算术运算.
哦,对有符号型数据,计算机是以补码的形式进行映射.即编码.简单说就是一个补码对应一个数字.所以对负数,计算机也是将结果通过补码的形式,写入显存,从而显示出来的.
如果您还有什么问题,可以问我的勒~
热心网友
时间:2024-03-03 09:49
呵呵,这个问题,计算机应该是:
1、如果 &运算符的两个操作数是两个变量,就直接把内存中的二进制位直接拿来位运算,整型数在计算 机 中是以二进制补码存储的,所以应该说是以补码来运算的,虽然正数的原码与其补码数值上相同,但意义不同,故我认为这边不能说是写成源码之类的。。
2、如果&运算符两边有 常量,这是很自然的要把常量转化为计算机存储的方式,即补码形式(所以有你说的“书中写到负数先要取反,再进行“按位与”,”),但结果决不能说是“当结果写成十进制时,应写成原码。”,尽管数值上有可能相等,但其还是补码
热心网友
时间:2024-03-03 09:50
不需要写成什么原码,直接位与运算就行。输出结果通常都是十进制,不存在什么原码。
热心网友
时间:2024-03-03 09:51
这个你就不用操心了,因为系统会自动进行相应转换