大家好,又见面了,我是你们的朋友全栈君
Int32转换为int16会丢失精度,这是总所周知的,但是具体如何丢失精度的,请看下面的代码:
var tmp1 int32 = 123424021
var tmp2...%b,%d\n",t2,t2,t2);
fmt.Printf("0x%x,%b,%d\n",t3,t3,t3);
运行的结果是:
2.原理分析
首先,我们分别把123424021和123456789转换为二进制形式...在带符号的二进制数中,最高位为0表示该数字为正数,最高位为1表示该数字为负数,因此:
0100110100010101是一个正数,1100110100010101是一个负数。...但是在无符号的二进制数中,我们可以把1100110100010101看作一个正数来处理,此时1100110100010101转换为十进制就是52501。...3.二进制正负数的转换运算
二进制的负数采用补码的方式来实现,运算规则是将正数取反后再加1,例子:
假如我们要表示-100,首先,100的二进制形式是01100100,我们对其近期取反操作10011011